【发布时间】:2020-07-13 09:06:58
【问题描述】:
我遇到了一个问题,即 jquery ajax post 方法适用于 chrome,但不适用于 safari 或 firefox。我浏览了所有其他类似的帖子,但它们并没有解决问题。每当我运行 ajax 代码时,它只会返回表单所在页面的整个 HTML。
这是我的 javascript:
$("#piece-form").submit(function(e)
{
e.preventDefault();
// gets which submit button was clicked
var selectedButton = $(this).find("input[type=submit]:focus");
var url = selectedButton.attr("name");
var formData = new FormData(this);
$.ajax
(
{
type: "POST",
url: url,
data: formData,
cache: false,
processData: false,
success: function(data)
{
if(data == "Success!")
{
$("#error-box").css("display", "none");
$("#success-box").html("Success! Publishing...");
$("#success-box").css("display", "block");
}
else
{
$("#success-box").css("display", "none");
$("#error-box").html(data);
$("#error-box").css("display", "block");
}
}
}
)
});
无论函数指向的 PHP 文件的内容如何,它都不会按计划工作。我试过用一条回显线制作一个 PHP 文件,但我仍然遇到同样的问题。我也在 ajax 中实现了一个错误块,它什么也不返回。我在控制台中也没有收到错误消息,除了:“主线程上的同步 XMLHttpRequest 已被弃用,因为它对最终用户的体验产生不利影响。在 Firefox 中获取更多帮助http://xhr.spec.whatwg.org/"
编辑:我添加了 contentType:false,但它在 Firefox 和 Safari 上仍然无法正常运行
【问题讨论】:
-
尝试添加
async: true。检查是否有效 -
@Anvay 我试过了,没有骰子
-
@LelioFaieta — 你完全错了。提交事件在默认行为发生之前触发。可以在提交事件上使用
preventDefault阻止表单提交。对这类事情使用提交事件是最好的做法。 -
这只是一个猜测。 .如果您没有特别需要使用
processData,请尝试将其删除,看看是否有效! -
@Ingus 如果我删除 processData 表单由于某种原因无法完全提交。至少这是一个不同的反应哈哈
标签: javascript php html jquery ajax