【问题标题】:Weird ajax error response when alerting警报时奇怪的 ajax 错误响应
【发布时间】:2012-06-20 09:39:28
【问题描述】:
function girisAjaxKontrol() {
var kullanici = { 'kullaniciAdi': $('#username').val(), 'sifre': $('#password').val() };

$.ajax({
    url: '/Giris/GirisGecerliMi',
    type: 'POST',
    data: kullanici,
    success: girisAjaxReturn,
    error: function (error) {
        alert(error.toString());            
    }
});

}

调试 asp .Net MVC4 项目时一切正常。但是,在发布之后,上面的代码块会返回一条警告消息作为“[object Object]”。为什么错误信息不是字符串,为什么发布后它不起作用?

【问题讨论】:

标签: jquery asp.net-mvc asp.net-mvc-4 publish


【解决方案1】:

jQuery.ajax() 的 .error() 事件接受三个参数:

jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象, 描述发生的错误类型的字符串,以及 一个可选的异常对象,如果发生了。 - 更多关于 jQuery.ajax() here.

您的 .error() 事件正在接受一个参数,该参数由 jQuery 自动读取为 jQXHR 对象。要在警报中看到它,请尝试执行以下操作:

alert(JSON.stringify(error));

或者,您可能希望返回错误描述:

error: function(error, textStatus) {
     alert(textStatus);
}

只有在发生 HTTP 错误时才会返回异常对象。

【讨论】:

  • 谢谢,这正是我需要的。
【解决方案2】:

$.ajax() 返回的延迟对象的error 事件处理程序采用三个参数:

error : function (jqXHR, textStatus, errorThrown) { }

由于您只为错误处理程序声明 function (error) { },因此您实际上是在提醒 AJAX 调用中使用的原始 XHR 对象。

如果您想检查整个对象,您可以在您的函数上尝试console.log(error),或者尝试使用JSON.stringify(error) 将其转换为 JSON 字符串,然后发出警报。

或者,您也可以检查传递给错误处理程序的第二个或第三个参数。就我个人而言,为了简洁起见,我喜欢在错误函数上签名,例如 function (x,s,e) {}

【讨论】:

    猜你喜欢
    • 2017-09-04
    • 2011-09-09
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多