Javascript jQuery ajax在Chrome和Safari中失败*有时*(ERR\u EMPTY\u RESPONSE)

Javascript jQuery ajax在Chrome和Safari中失败*有时*(ERR\u EMPTY\u RESPONSE),javascript,jquery,ajax,wordpress,google-chrome,Javascript,Jquery,Ajax,Wordpress,Google Chrome,我有一个表单是通过jQuery ajax提交的,突然,出乎意料地,它在Chrome和Safari操作系统X上的一些请求上开始失败。我测试了Firefox、Opera和iOS Safari,它们似乎都工作得很好(但是我不能说我100%肯定这一点,因为错误似乎是随机出现的,但我在每个浏览器中尝试了10次请求,没有失败) Chrome说POSThttp:///wp-admin/admin-ajax.php 控制台中的ERR_EMPTY_RESPONSE,当请求失败时,在控制台中记录RESPONSE对象

我有一个表单是通过jQuery ajax提交的,突然,出乎意料地,它在Chrome和Safari操作系统X上的一些请求上开始失败。我测试了Firefox、Opera和iOS Safari,它们似乎都工作得很好(但是我不能说我100%肯定这一点,因为错误似乎是随机出现的,但我在每个浏览器中尝试了10次请求,没有失败)

Chrome说
POSThttp:///wp-admin/admin-ajax.php 控制台中的ERR_EMPTY_RESPONSE
,当请求失败时,在控制台中记录RESPONSE对象会给我
对象{readyState:0,responseText:,status:0,statusText:“error”}
,这不是很有帮助

但是,无论响应是否表示失败或成功,完整的PHP脚本都会执行。我知道这一点,因为从表单发送的电子邮件总是会被传递。此外,在PHP中记录所有传入的请求头时,失败的请求和成功的请求之间没有区别

我还用bash
$curl…
检查了响应,没有发现响应之间有任何差异,即使我使用了可以从Chrome的网络选项卡复制的命令(右键单击请求>复制为curl)

如果我省略其中一个字段(“电话”),错误似乎会消失。但如果我继续单击提交按钮几次,请求最终会成功(大约2-5次提交后)-即使填写了“电话”,所有请求的表单数据都是相同的

失败的请求和成功的请求在响应时间上没有差别(即,我在失败的请求上得到了1.11秒,在成功的请求上得到了1.16秒)

用于提交的代码:(this.onSuccessthis.onError当前只记录请求结果)

$.ajax(“”{
行动:“”,
方法:“POST”,
data:data,//序列化表单
success:$.proxy(this.onSuccess,this),//当前仅console_记录响应对象
错误:$.proxy(this.onError,this),//当前仅console_记录响应对象
始终:$.proxy(this.always,this)
});
此外,我还发现了一些关于Chrome中缓存超时和问题的信息,因此我尝试在不做任何更改的情况下对其进行更改:

$.ajax('<url>', {
    action: '<url>',
    timeout:9999,
    async:true,
    cache:false,
    method: 'POST',
    data: data, // Serialized form
    success: $.proxy(this.onSuccess, this), // currently just console_logs the response object
    error: $.proxy(this.onError, this), // currently just console_logs the response object
    always: $.proxy(this.always, this)
});
$.ajax(“”{
行动:“”,
超时:9999,
async:true,
cache:false,
方法:“POST”,
data:data,//序列化表单
success:$.proxy(this.onSuccess,this),//当前仅console_记录响应对象
错误:$.proxy(this.onError,this),//当前仅console_记录响应对象
始终:$.proxy(this.always,this)
});
表单看起来像这样(但是有很多样式模糊):


斯奇卡
有人知道这是什么原因吗?或者至少能给我一个如何继续下去的提示吗?我现在没什么想法了

提前谢谢

更新 Safari突然工作正常…只是Chrome有问题。没有对代码做任何更改,它只是神奇地开始工作

顺便说一下,我当然知道这是很不可能的事情发生“随机”的,而且如果看起来是这样的话,故障排除很可能没有足够系统化,但在这种情况下,错误似乎确实是随机出现的。

仅供参考:
我最终绕过了这一点,检查响应对象是否匹配此错误,并在发现此错误时触发了
onSuccess
。但它成功了。

您应该尝试增加服务器php.ini文件中的内存限制,甚至至少在测试时禁用它。

这在我们从PH更新时得到解决第5.4至5.6页-PHP中似乎存在某种缺陷。希望它能帮助某些人!

该错误似乎表明错误发生在接收请求的服务器上,而不是Javascript。^响应失败与成功之间几乎没有区别,甚至响应时间也没有区别。我不明白它如何成为服务器的错误当服务器的响应相同时出现ide错误。而且它在不同浏览器之间处理请求的方式也不不同,所以对我来说似乎不太可能出现这种情况。Ajax调用是如何调用的?错误日志中没有任何错误。感谢您的响应,但是不会出现与内存限制相关的问题吗?并给出500个响应/部分响应onse?这个问题也只出现在chrome中,有时在提交与没有问题时完全相同的数据时出现。我真的认为这是一个与浏览器相关的问题。你可能是对的。但问题是,我在尝试上载一个大文件时收到了ERR_EMPTY_响应。但在尝试了一系列操作后,我禁用了它d内存不足,错误消失了。实际上,我在尝试解决问题时发现了你的问题。因此,我认为最好至少让你知道。很有趣……希望它能帮助别人解决与你类似的问题,谢谢你的输入!我在5.6上,也有同样的问题:)见鬼:)
$.ajax('<url>', {
    action: '<url>',
    timeout:9999,
    async:true,
    cache:false,
    method: 'POST',
    data: data, // Serialized form
    success: $.proxy(this.onSuccess, this), // currently just console_logs the response object
    error: $.proxy(this.onError, this), // currently just console_logs the response object
    always: $.proxy(this.always, this)
});
<form action="#ww_main" class="ajax-form">
    <input type="text" data-min-length="3" name="main[name]" id="name" required="">
    <input type="email" name="main[email]" id="email" required="">
    <input type="tel" name="main[phone]" id="phone">
    <textarea name="main[message]" data-min-length="5" id="message" required=""></textarea>
    <button type="submit">Skicka</button>
</form>