gpt4 book ai didi

javascript - jQuery ajax 在 Chrome 和 Safari 中*有时* (ERR_EMPTY_RESPONSE) 失败

转载 作者:搜寻专家 更新时间:2023-11-01 04:36:05 25 4
gpt4 key购买 nike

我有一个通过 jQuery ajax 提交的表单,突然间,在 OS X 上的 Chrome 和 Safari 中,一些 请求开始失败。我我已经测试过 Firefox、Opera 和 iOS Safari,它们似乎都可以正常工作(但我不能说我 100% 确定这一点,因为错误似乎是随机出现的,但我在每个浏览器中尝试了约 10 个请求,没有失败).

Chrome 显示 POST http://<site url>/wp-admin/admin-ajax.php net::ERR_EMPTY_RESPONSE在控制台中,并在控制台中记录响应对象会给我 Object {readyState: 0, responseText: "", status: 0, statusText: "error"}当请求失败时,不是很有帮助。

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

我还用 bash 检查了响应 $ curl ...并且找不到响应之间的任何差异,即使我使用可以从 Chrome 的网络选项卡复制的命令(右键单击请求 > 复制为 cURL)。

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

失败请求和成功请求之间的响应时间没有差异。 (即我在失败时得到 1.11s,在成功时得到 1.16)。

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

$.ajax('<url>', {
action: '<url>',
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)
});

我还发现了一些关于 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)
});

表单看起来像这样(但有很多样式模糊):

<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>

有谁知道是什么原因造成的?或者至少可以给我一个关于如何继续的提示?我现在的想法已经用完了......

提前致谢!

更新

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

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

最佳答案

当我们从 PHP 5.4 更新到 5.6 时,这个问题得到了解决 - PHP 中似乎存在某种错误。希望对某人有所帮助!

关于javascript - jQuery ajax 在 Chrome 和 Safari 中*有时* (ERR_EMPTY_RESPONSE) 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32840530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com