所以,我正在做一个像这样的普通 ajax 调用:
$.ajax({
type: "GET",
url: this.Controller + "/" + this.Action,
data: data,
cache: false,
dataType: "json",
success: function (data) {
var json = $.parseJSON(data);
$("#Debug").html(JSON.stringify(json, undefined, 4));
},
error: function (jqXHR, textStatus, errorThrown) {
var errorMessage = "Unable to retrieve data."
if (jqXHR.responseText != null) {
errorMessage += "\n\nError Message: " + jqXHR.responseText;
}
alert(errorMessage);
}
});
当我为 ajax url 使用相对路径时,只要当前页面的 url 中没有 url 变量,它就可以正常工作。它将正确地转到http://domain.com/controller/action
如果有 url 变量,则 ajax url 会尝试 hit http://domain.com/controller/controller/action
,但不存在。
如果我像这样添加斜杠:
url: "/" + this.Controller + "/" + this.Action
这解决了 url 变量导致的问题,但仅限于本地。当我部署到我们的服务器时,我的应用程序位于一个子目录中,所以 url 是http://domain.com/myapp
. 斜杠解决方案不能像 root ishttp://domain.com
和 not那样工作http://domain.com/myapp
。