我正在尝试使用JavaScript通过Ajax提交表单.它适用于Browserstack中的IE,Firefox,Chrome和iOS,但它不适用于iOS模拟器或真正的iOS设备或桌面Safari.
我试过XMLHttpRequest onload和XMLHttpRequest onreadystatechange,既没有被触发.据我所知,request.open('POST', url, true);是不行的.console.log('2');永远不会被触发.
我添加了这个用于调试:
request.send(data);
console.log(request);
setTimeout(function(){ console.log(request); }, 3000);
Run Code Online (Sandbox Code Playgroud)
它们都在Safari中返回readyState:1,在其他浏览器中,第一个返回readyState:1,第二个返回readyState:4,如预期的那样.
这是我的代码简化为要点:
$('.ajax-form').submit(function(event) {
var form = event.target;
var data = new FormData(form);
var request = new XMLHttpRequest();
var method = form.getAttribute("method");
var action = form.getAttribute("action");
var url = window.location.href
request.open('POST', url, true);
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
request.setRequestHeader("HTTP_X_REQUESTED_WITH", "XMLHttpRequest");
request.setRequestHeader("pragma", "no-cache");
console.log('1');
request.onreadystatechange = function() {
console.log('2');
if (request.readyState === 4 && request.status === 200) …Run Code Online (Sandbox Code Playgroud)