阿贾克斯.BeginForm - OnFailure 未收到 JSON 响应



为什么 OnFailure 回调在部署到内部企业 Azure 服务器时没有收到 JSON 响应?OnSuccess 回调总是得到响应,并且响应正确转换为 JSON 对象,在我的笔记本电脑上使用 IISExpress 和 Azure 网站工作,没有问题。

问题是 OnFailure 回调,在我的笔记本电脑上它工作正常,我在 XHR 中得到一个响应 JSON 对象,我可以提取并显示错误消息。当我将其部署到 Azure Web 服务器时,OnFailure 函数停止接收响应 JSON,一切似乎都正常,OnFailure 是根据 HTTPResponse 代码触发的,任何日志中都没有错误。只是没有从 .Net 控制器获取 JSON 对象???

我有一个用 C# 编写的基本 MVC Web 应用程序。一个单独的cshtml页面,将其作为Ajax.BeginForm定义

@using (Ajax.BeginForm("AjaxTest", "Home", null,
new AjaxOptions
{
HttpMethod = "POST",
OnBegin = "OnBegin",
OnSuccess = "OnSuccess",
OnFailure = "OnFailure"
},
new { id = "frmAjaxTest" }
)
)

有了这些作为javascript函数...

function OnBegin() {
console.log("OnBegin:");
}
function OnSuccess(response) {
console.log("OnSuccess:");
}
function OnFailure(xhr, status, error) {
console.log("OnFailure");
}

还有一个控制器,它会根据我点击哪个按钮返回好或坏的响应......

[HttpPost]
public ActionResult AjaxTest(AjaxTestFields model, string Success, string Failure)
{
dynamic jsonMessage = new { 
returnParm1 = "Parm1",
errorMessage= "Message"
};
if (!String.IsNullOrEmpty(Failure))
{ 
HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Json(jsonMessage, JsonRequestBehavior.AllowGet);
}
else
{
HttpContext.Response.StatusCode = (int)HttpStatusCode.OK;
return Json(jsonMessage, JsonRequestBehavior.AllowGet);
}
}

关于为什么 Azure 会阻止将 JSON 响应发送到 OnFailure 回调的任何想法???

您是否检查了浏览器的错误日志中是否有可能捕获的任何其他错误?我看到在跨域进行 AJAX 调用时,跨站点脚本 (XSS( 错误在浏览器中产生了类似的行为。

最新更新