Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用.post()处理错误_Jquery - Fatal编程技术网

Jquery 使用.post()处理错误

Jquery 使用.post()处理错误,jquery,Jquery,我必须修改别人写的项目。因为代码乱七八糟,我无法真正更改此$.post()(或用$.ajax()替换它)。我需要做的是,知道post是否返回其他内容,然后返回JSON并返回它 $.post('balbal.html', json, function(data) { ... my coude ... }, 'json') 我可以在console.log中看到post响应。有一种简单的方法可以检索它吗?您可以使用$.ajax()($.post是一种最终调用它的快捷方式),并定义错误回调 或者,如果

我必须修改别人写的项目。因为代码乱七八糟,我无法真正更改此$.post()(或用$.ajax()替换它)。我需要做的是,知道post是否返回其他内容,然后返回JSON并返回它

$.post('balbal.html', json, function(data) { ... my coude ... }, 'json')
我可以在console.log中看到post响应。有一种简单的方法可以检索它吗?

您可以使用
$.ajax()
$.post
是一种最终调用它的快捷方式),并定义错误回调

或者,如果你真的不想这样做,打电话给我

$.ajaxError(function(){
   //error handler
})

在此之前,
$.post

有几种方法可以做到这一点,但是如果您无法通过返回的JSON数据对象获得可用的错误响应,那么可以使用jQuery为所有ajax调用定义默认值。尽管
$.post()
方法本身没有指定错误处理程序或回调,但是
$.ajaxSetup()
方法将捕获任何ajax错误并执行您为其定义的函数

或者,还有一个函数可以做同样的事情


请注意,如果JSON响应返回正确,但带有服务器端错误代码,则此操作将不起作用。如果您想捕获这些类型的情况,最好在post之后立即使用定义错误回调的方法来查找它们。请注意,分号仅位于末尾

$.post('balbal.html', json, function(data) {
    // ... my code ...
})
.fail(function(response) {
    alert('Error: ' + response.responseText);
});

对于较旧版本的jQuery(1.8之前)使用相同的语法。

您可以这样做


有关详细信息,请访问:

$中没有错误处理。post
因为它只是一种保存键入内容的快捷方法。我尝试了ajaxError,但没有执行。我从帖子中得到了一个答案,但它是一个php错误,而不是我所期望的json。然后劫持成功处理程序并首先在那里添加一个检查。会有人打电话的,不是吗如果响应不是json,请不要进入成功处理程序。如果能得到实际的错误消息,那就好了,但这很酷thanx@John将来任何人来到这里,如果你这样做了。失败(res),那么你可以执行res.responseText来访问错误消息。现在,您可以对错误消息执行res.responseText或res.responseJSON,而json对象只需在控制台中的.fail()期间打印响应对象。控制台日志(响应);您可以查看可能可以使用的所有可用对象。您可以通过
响应获取状态。statusText
和选项有:
未修改
无内容
错误
超时
中止
,或
解析器错误

/ Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post( "example.php", function() {
  alert( "success" );
})
  .done(function() {
    alert( "second success" );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "finished" );
  });
 
// Perform other work here ...
 
// Set another completion function for the request above
jqxhr.always(function() {
  alert( "second finished" );
});