ajax请求回调函数的问题。

ajax请求成功后会调用success回调函数,但是不知道为什么当后台请求出错后,这个ajax请求不会执行error回调函数,求大神指导!
代码如下:

$.ajax({
    type: "POST",
    contentType: "application/jsonp; charset=utf-8",
    url: 'http://127.0.0.1:8080/MiddleTier/T_ENT_PERSON/insert?strJson=' + _jsonStr + '&jsoncallback=?',
    dataType: "jsonp", //dataType:'json',
    async: false, // 同步
    success: function(_json) {
        if (bosun.FormRespIntercepter('json', _json)) {
            closeAddWin();
            reloadData();
            $.messager.alert('提示信息', _json.resultMsg, 'info');
        }
    },
    error: function() {
        alert("亲,服务出错了!");
    }

});
阅读 6.8k
2 个回答

这里的error是说服务端返回了非正常状态码(200)的情况下执行的回调。 估计数据出错时,服务端没有指定状态码,你的代码依然会走success回掉,但是bosun.FormRespIntercepter('json', _json)调用返回false,看起来像什么也没发生。
你可以用js调试工具下断点来验证。firebug或者chrome F12都支持。

另外,建议通过_json数据的某个字段,比如code来判断是否出错。比如code==0,表示正常,code非0表示出错。

因为jquery中获取jsonp和json的形式不一样的,jsonp是创建script标签来获得,出错后不会执行error方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进