jQuery Ajax URL

11

我正在从 site.com/users/{username} 进行 Ajax 调用。

我想访问 site.com/account/deleteComment,但是当我在 FireBug 中检查时,它试图访问 site.com/users/account/deleteComment

以下是我的代码:

    $.ajax({
        url: "../account/deleteComment/" + deleteID,
        success: function () {
            $("#comment-" + deleteID).slideUp("fast");
        }
    });
5个回答

17

那么,../../ 就可以解决问题了,是吗?

话虽如此,在这里使用绝对 URL 可能是一个好主意。

  url: "/account/deleteComment/" + deleteID,

这将使您无法轻松地将应用程序移动到子文件夹中,但在大多数情况下,这不是问题。


看起来它可以工作。在本地主机上,我的应用程序位于localhost/project/,所以它将转到localhost/account/deleteComment。有没有办法让它从任何地方都能工作?我相信它会在服务器上工作的 :D - Harsha M V
@Harsha,您需要在一个中央的.js文件中定义应用程序的当前子目录:rootPath = "http://localhost/project",并将rootPath添加到您指定的每个URL中。 - Pekka

11

你可以使用 location.origin 获取基础地址

var deleteID;
 $.ajax({
        url:location.origin + "/account/deleteComment/" + deleteID,
        success: function () {
            $("#comment-" + deleteID).slideUp("fast");
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

 $.ajax({
        url:location.origin + "/account/deleteComment/" + deleteID,
        success: function () {
            $("#comment-" + deleteID).slideUp("fast");
        }
    });


将我引导到正确的路径,其中我找到了 window.location.origin。https://developer.mozilla.org/en-US/docs/Web/API/Location/origin - burf

2
将URL更改为:
/account/deleteComment/

那样它将进入根路径:
site.com/account/deleteComment

2

ajax中,绝对URL是个好主意,但这种方法更好且更容易。只需全局声明var siteURL = www.example.com;并在每个ajax请求中使用如下所示。

<script>
$.ajax({
    url: siteURL + '/path/to/file',
    type: 'POST',
    data: {param1: 'value1'},
});
</script>

一般情况下,我会在主索引文件或JS文件的配置中进行声明。

1
我刚在我的一个应用程序中遇到了类似的问题。
我使用的解决方案是:
$.url("Config/GetEnvironment")

无论我在哪个目录中,URL都会正确呈现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接