【发布时间】:2018-11-30 02:36:44
【问题描述】:
我有一个表单,它通过 ajax 脚本向一些 PHP 代码发布表单。奇怪的是,一切都在 Safari 中运行,但是一旦我在 Firefox 或 Chrome 中尝试它,ajax 调用会将所有内容都视为错误,尽管控制台没有显示任何错误。
$('#newClearance').on("submit", function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
method: 'POST',
url: 'modules/avas/library/avas_functions.php?action=newClearance',
data: formData,
contentType: false,
cache: false,
processData: false,
success: function (data, status) {
$('#formModal').modal('hide');
$.notify(data, {type: 'success'});
$.get(window.location)
.done(function (r) {
var newDom = $(r);
$('#clearanceList').replaceWith($('#clearanceList', newDom));
});
},
error: function (data,status,error) {
$.notify(error, {type: 'danger'});
}
});
});
如果我将 html 表单直接发布到 PHP 脚本,一切顺利,PHP 脚本返回成功。它适用于所有浏览器。
我真的找不到线索,尤其是同一个脚本,除了另一种形式,在所有浏览器中都可以正常工作。有人知道吗?
其他信息 需要注意的一点可能是表单和 jquery 被放置在一个模式中,正如您可能会从代码中注意到的那样。
【问题讨论】:
-
在 Chrome Devtools 中转到网络选项卡,选择 XHR(用于 Ajax)然后提交您的表单以触发 Ajax 请求。您能在该选项卡上的呼叫列表中看到请求吗?它应该出现在那里,如果您在列表中选择请求,您将可以访问响应详细信息,请将它们发布在此处,以便我们为您提供更多帮助。
-
Firefox 中的响应:SyntaxError:JSON.parse:JSON 数据的第 1 行第 1 列的数据意外结束。 Cache-Control no-store, no-cache, must-reval…te, post-check=0, pre-check=0 Connection keep-alive Content-Type application/json Date Wed, 20 Jun 2018 21:51:59 GMT已过期 Thu, 19 Nov 1981 08:52:00 GMT Pragma no-cache Server nginx/1.13.2 Transfer-Encoding chunked X-Powered-By PHP/5.6.32
-
和 Safari:响应 HTTP/1.1 200 OK 内容类型:application/json 编译指示:no-cache 日期:2018 年 6 月 20 日星期三 21:53:33 GMT 连接:keep-alive 服务器:nginx /1.13.2 X-Powered-By: PHP/5.6.32 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 传输编码:身份
-
如消息所述,Firefox 中的 JSON 数据解析存在错误。你能把这次调用的请求数据粘贴到这里吗?
-
好的,我想我离解决方案越来越近了。如果我正在查看 devtools 中的请求有效负载,它看起来像 PHP 脚本成功执行脚本所需的提交按钮的值在 Firefox 和 chrome 中丢失,而不是在 safari 中。
标签: javascript ajax google-chrome firefox safari