在开发过程中,我发布了一篇Ajax帖子,该帖子适用于开发。但是,当我把它放在测试服务器上时,它不起作用,因为IIS已经为应用程序分配了一个子文件夹,而这在我的开发环境中是缺失的。我已经找到了解决方法(见下文),但我是第一个承认这不应该是解决方案的人,因为每次调用Ajax时,我都必须记住为url调用函数。一定有更好的办法。然而,代码将向您显示我正在修复的内容;
function OperationsManagerFlagClickFunc(userId) {
$.ajax({
url: GetUrl("/Users/UpdateOperationsManagerFlag"),
type: "POST",
data: { "userId": userId },
success: function (data) { }
});
}
function GetUrl(path) {
var pathArray = window.location.pathname.split('/');
if (pathArray[1] === "ITOC")
return "/ITOC" + path;
else
return path;
}
如果你的javascript在.aspx文件中,你可以生成这样的url:
function OperationsManagerFlagClickFunc(userId) {
$.ajax({
url: "<%= Url.Action("UpdateOperationsManagerFlag","User") %>",
type: "POST",
data: { "userId": userId },
success: function (data) { }
});
}
为什么不单独定义一个变量,比如siteUrl,在两台服务器上使用不同的值来保存网站的url?那就做:
url: siteUrl + "/Users/UpdateOperationsManagerFlag"