为什么这个$ .post()不适用于iOS?

时间:2017-12-08 18:24:48

标签: javascript jquery ios forms submit

为什么以下表单不适用于iOS?

适用于Chrome / Android / Windows / Mac但不适用于iOS上的Safari / Chrome。我已经将问题缩小到了jquery post函数。

它使它超过了“e.preventDefault()”但从不发布数据(我有一个PHP脚本确认帖子永远不会发送到服务器)。并且使用alert()的回调不会触发。

<form method="post" action="" id="wl_form">
<div class="form-group">
    <label for="first">First Name *</label>
    <input type="text" name="first" class="form-control" id="first">
</div>
<button name="submit" type="submit" id="submit" class="btn btn-default">Submit</button>
</form>

var form = document.getElementsByTagName('form')[0];

form.addEventListener('submit', doSubmit);

function doSubmit (e) {

    e.preventDefault();

    alert("ive made it this far");

    $.post("record.php",
    {
        first: $("#first").val()
    },
    function(data){
        console.log("submitting");
        alert("Success: " + data);
    });

    window.location.href = "nextpage.html";
}

1 个答案:

答案 0 :(得分:0)

看起来你在ajax后调用后立即执行重定向。如果您足够快地执行页面传输,则会取消ajax请求,并且您的后端可能永远不会看到它。

正如您在评论中发现的那样,将重定向移动到成功回调中应该允许您完全执行ajax请求,然后执行重定向。