jQuery.Ajax错误结果

时间:2014-09-18 07:02:56

标签: javascript jquery ajax json

我在服务器端使用MVC并通过jQuery.Ajax发送json类型来调用函数。 函数结果有异常。 我想调用/触发Ajax的错误结果函数,我应该用返回的JSON函数发回什么? 例如,让我们说从catch部分触发返回JSON。

MVC功能

public JsonResult Func()
{       
    try
    {               
        var a = 0;
        return Json(a, JsonRequestBehavior.AllowGet);              
    }
    catch (Exception ex)
    {
        FxException.CatchAndDump(ex);
        return Json(" ", JsonRequestBehavior.AllowGet);
    }
}

JavasScript调用

$.ajax({
    url: '../Func',
    type: 'GET',
    traditional: true,
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    success: function (data) {
        alert('s');
    },
    error: function (data) {
        alert('e');
    }
});

3 个答案:

答案 0 :(得分:0)

引自this answer

当服务器的响应不符合您的预期时,将执行错误回调。例如,在这种情况下:

已收到HTTP 404/500或任何其他HTTP错误消息 收到了不正确类型的数据(即您已经预期JSON,您已收到其他内容)。

当服务器的响应不符合您的预期时,将执行错误回调。例如,在这种情况下:

已收到HTTP 404/500或任何其他HTTP错误消息 收到了不正确类型的数据(即您预期JSON,您已收到其他内容)。 在您的情况下,数据是正确的(这是一个JSON消息)。如果要根据接收数据的值手动触发错误回调,则可以非常简单地完成。只需将错误的匿名回调更改为命名函数。

function handleError(xhr, status, error){

    //Handle failure here

 }

$.ajax({

  url: url,
  type: 'GET',
  async: true,
  dataType: 'json',
  data: data,

 success: function(data) {
     if (whatever) {
         handleError(xhr, status, ''); // manually trigger callback
     }
     //Handle server response here

  },

 error: handleError
});

答案 1 :(得分:0)

当HTTP响应代码不是error(成功)时,以及当响应内容不符合您200的预期contentType时,会调用

json回调情况下。

因此,您必须发送带有一些失败响应代码的HTTP标头(例如404)或输出非json响应内容。在后一种情况下,您只需输出空字符串:

return "";

答案 2 :(得分:0)

如果您想在AJAX中触发错误,但仍然知道“为什么”触发了该错误,以便您可以自定义错误消息,请参见这篇文章:

https://stackoverflow.com/a/55201895/3622569