我有一个通过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中记录所有传入请求标头时,失败请求与成功请求之间没有区别.
我还使用bash检查了响应,$ curl ...并且无法找到响应之间的任何差异,即使我使用可以从Chrome的网络选项卡复制的命令(右键单击请求>复制为cURL).
如果我省略其中一个字段("电话"),则错误似乎消失了.但是如果我一直点击提交按钮几次请求最终成功(大约2-5次提交后) - 即使填写了"电话",表单数据在所有请求中都是相同的.
失败请求与后续请求之间的响应时间没有差异.(即我在失败时得到1.11s,在成功时得到1.16).
代码用于提交:(this.onSuccess和this.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)
});
Run Code Online (Sandbox Code Playgroud)
此外,我发现了一些关于超时和Chrome中缓存问题的内容,因此我尝试更改它而不做任何更改:
$.ajax('<url>', {
action: '<url>',
timeout:9999, …Run Code Online (Sandbox Code Playgroud) 我在webpack中设置了一些别名,如下所示:
resolve: {
alias: {
data: path.resolve(__dirname, 'data'),
withStyles: 'isomorphic-style-loader/lib/withStyles',
modules: path.resolve(__dirname, 'src', 'modules'),
components: path.resolve(__dirname, 'src', 'components'),
},
Run Code Online (Sandbox Code Playgroud)
@imports在文件顶部的sass文件中执行时,它们工作正常:
@import '~components/common/css/mixins';
.root {
@include scale-size(padding-top, 24px, 42px);
...
Run Code Online (Sandbox Code Playgroud)
但是,当加载"compes"时,它说它找不到模块:
.bottom-cta {
composes: cta from '~components/common/css/button';
...
Run Code Online (Sandbox Code Playgroud)
但是,如果使用"普通"路径(../../components/common/css/button)它可以工作.
这是预期的行为吗?我怎么解决这个问题?
提前致谢.