如何解决AJAX 请求适用于桌面 (chrome),在 IOS (chrome/safari) 上出现 409 错误
我正在做一个 html 表单提交的简单拦截,并使用 AJAX 手动发布结果。这在桌面上运行良好,但在 IOS 上失败并出现 409 冲突错误。我的理解是这表明多个 POST 正在同时发送并且相互冲突。
我已经广泛搜索了解决方案,并且我已经采取了所有必要的措施来防止重复提交,据我所知,它们不应该发生。但是我仍然收到此错误。我已经尝试了以下
- e.preventDefault() 在提交处理程序中
- e.stopImmediatePropagation() 在提交处理程序中
- 在提交处理程序中返回 false
- 向表单元素添加额外的 onsubmit="return false"
- cache:false 在 ajax 选项中并添加 ?x=[randomnumber] 到 url,以确保我得到新的结果
- async:true 在 ajax 选项中
- crossDomain:false 在 ajax 选项中
- 使用调试日志确认我的提交处理程序只发送了一个表单,并且 ajax调用
- 同时使用绝对和相对 URL
这是我的代码要点
<form id="myform" onsubmit="return false">
... form fields
<input type="submit"value="Submit">
</form>
var form = $('#myform')
form.on('submit',function(e) {
e.preventDefault()
e.stopImmediatePropagation()
var data = $(this).serialize()
var url = `PHP/contact-us.PHP?nocache=${Date.Now()}`
$.ajax({
url: url,data: data,cache: false,async:true,crossDomain:false,dataType:'text',type: 'POST',success: function(data){
alert(data);
},error: function(xhrRequest,status,error) {
alert(`There was an error submitting your request (${xhrRequest['status']}).`)
}
});
return false
})
我在桌面 (chrome) 上收到成功警报,在移动设备 (chrome/safari) 上收到“提交您的请求时出错 (409)”。为什么会发生这种情况?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。