PHP Jquery Ajax调用抛出net :: ERR_EMPTY_RESPONSE

我在页面中有以下JavaScript代码。 当进行ajax调用时,我可以看到浏览器inspect / debugger部分抛出net :: ERR_EMPTY_RESPONSE错误。 它在localhost环境中工作正常,但在生产中抛出错误。

在客户端代码中,

 $(document).ready(function(){ $("#identityLinks a").on("click", function(){ value = $(this).attr("id"); if(value != "") { $.ajax({ url: "publish/updateUsersData.php", type: "POST", data: {receiverId: value}, contentType: "application/x-www-form-urlencoded; charset=UTF-8", dataType: "json", success: function(data) { //alert(data["result"]); console.log(data["result"]); }, error: function(xhr, textStatus, errorThrown) { //alert(xhr +" "+ textStatus +" "+errorThrown); console.log(xhr +" "+ textStatus); } }); } });  

在服务器端代码(PHP)中,我在updateUsersData.php中有以下代码:

 $receiver_id); echo json_encode($arr); die(); break; } else { $arr = array("result"=>"No user data received. Error!"); echo json_encode($arr); die(); break; } ?> 

你认为这是由于Expire调用的标题还是Jquery 1.9.1版本中的错误? 我们之前的版本没有发现这样的错误。 此外,此代码尚未更新5个月,浏览器错误刚刚发布。 感谢您的帮助和支持。

编辑:

状态 :到目前为止,此问题尚未解决。 需要Jquery AJAX专家的帮助。 任何人,请提出这个问题。 此外, CORS不对此问题负责。

当点击发生上述错误的控制台时,我直接进入了这一行

 JQuery 1.9.1 where console error lines point to: => xhr.send( ( s.hasContent && s.data ) || null ); Also these ones are shown in console error mark: => transport.send( requestHeaders, done ); => ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) .apply( matched.elem, args ); => return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : undefined; 

是jquery最新版本负责此PROVISIONAL HEADERS ARE SHOWN错误。

我相信您的请求不属于CORS规范下的“简单请求”:

http://www.w3.org/TR/cors/#simple-cross-origin-request-0

因为您要为Content-Type设置响应头:application / json。

因此,您的服务器将需要处理预检请求,这涉及在请求和响应上设置一些额外的标头以使CORS请求成功

这是一篇关于你需要做什么的好文章 – 请查看“不那么简单”下的内容:

http://www.html5rocks.com/en/tutorials/cors/

有时会在我的页面上遇到同样的问题。 我认为这是因为变量的数量或它们有多大。 我有一个页面,发送一个大约250个变量的json没有任何问题,但这个错误发生在这个页面,而大约1500个变量将被发送。 这个问题很新。 以前,每个甚至有3000个变量的东西都没有问题。 在最近的版本中,我在chrome和firefox中都会出现此问题。 这不是服务器端错误,因为我已经配置了apache来恢复100万个30 Mb数据的变量。

我有同样的错误,并能够通过将我需要处理的所有数据发送到服务器,然后让它将更新的数组吐回客户端,以便只进行一次AJAX调用来修复它。

我无法确定这个问题的确切原因,但我很确定正在发生的事情是某种缓冲区正在满足所有这些AJAX调用的容量,导致服务器关闭其中一些请求。

希望这可以帮助。

因此,无论使用何种语言或技术,这都可能由于多种原因而发生。 我遇到过这种情况,使用角度资源来回传送15-20个数据点的极小负载。 PHP,Jquery,Angular都以不同的方式处理错误,但结果归结为发生的三件事之一。

  1. 延迟或网络问题,我已经在非常慢的连接上发生了这种情况,再次这可能是一个糟糕的路由器或不正确的防火墙配置,只是在一个糟糕的网络,到avast这样的程序,使代理到位,以保护您免受病毒。

  2. 高服务器负载,我迫使服务器在压力测试中处于100%cpu,这将在随机调用上发生,因为服务器没有足够快地处理请求。 这很难修复,实际上是系统的扩展问题。

  3. 巨大的数据集,响应失败的大型项目,通常可以通过调整您正在使用的任何Web服务器上的超时设置来修复。

由于我的网络问题我发现了同样的问题,可能是你的网络也造成了这个问题。

使用XMLHttpRequest()时,我也遇到了同样的错误。

但是我能够通过禁用服务器端脚本的内存限制来解决错误。

这是通过在php.ini文件中将memory_limit设置为-1来完成的。 默认情况下,它设置为128M,因此您也可以尝试增加内存大小而不是完全禁用它,因为它可能需要大量服务器资源。

在大多数情况下,我已经能够通过一个简单的函数来解决这个问题,我写这个函数来转储/重置所有垃圾内存,并在任何/所有循环之后刷新/重置输出内存。

 function memes(){ ob_flush(); ob_end_flush(); gc_collect_cycles(); ob_start(); gc_enable(); }