2017-12-08 7 views
0

次のフォームがiOSで動作しないのはなぜですか?

Chrome/Android/Windows/Macでは動作しますが、iOSではSafari/Chromeでは動作しません。 jquery post関数の問題を絞りました。

"e.preventDefault()"を過ぎてしまいますが、データを投稿することはありません(私はPHPスクリプトを使って投稿がサーバに送られないことを確認しています)。そして警告()のコールバックは起動しません。

<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"; 
} 
+0

window.location.href行をコメントアウトするとどうなりますか? – Taplar

+0

gah!それでおしまい。私はコールバックにhrefを移動し、すべてが今良いです。ありがとう!それを正しい印をつけてください。 – Olgo

答えて

0

あなたはすぐにポストAJAX呼び出しの後にリダイレクトを実行しているように見えます。あなたがページ転送を十分に速く実行すると、ajaxリクエストはキャンセルされ、バックエンドは決してそれを見ることができません。

コメントからわかるように、リダイレクトをsuccessコールバックに移動すると、ajaxリクエストを完全に実行してからリダイレクトを実行できるようになります。

+0

私はこれらの答えの1つを「それは私がClippyのような感じです。 – Taplar

関連する問題