警报时奇怪的ajax错误响应

时间:2012-06-20 09:39:29

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

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]”返回。为什么错误消息不是字符串,为什么它在发布后不起作用?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分: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错误时才会返回异常对象。