2016-09-18 20 views
1

送信ボタンがあるフォームがあります。そして私はonclick = "foo(イベント、これ);提出の送信ボタンに入力します。Safariでajaxが成功した後にフォームを送信する方法

私はajaxの成功の後にフォームを提出したいと思います。

ここに私のコード:

<form id="form_a" action="destination.html"> 

    <input type="submit" id="submit_button_1" value="Submit button 1" onclick="foo(event, this);"> 

</form> 

<script type="text/javascript"> 

function foo(event, this_element) 
{ 
    event = event || window.event; 
    event_target = event.target || event.srcElement; 

    //Prevent the immediate submission because I want submit after ajax success : 
    event.preventDefault(); 

    //Retrieve the submit button clicked : 
    if(this_element.id == "submit_button_1") 
    { 
      //Submit the form afer ajax success : 

      var xhr = new XMLHttpRequest(); 

      xhr.onreadystatechange = function() 
      { 
       if(xhr.readyState == 4 && xhr.status == 200) 
       { 
        //Retrieve the form object to submit : 
        form_a = document.getElementById("form_a"); 

        //Submit the form 3000 ms later : 
        setTimeout('form_a.submit();', 3000); 
       }  
      } 

      //Send ajax request on server : 
      xhr.open("POST", "server.php", false); 
      xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
      xhr.send(""); 
    } 
} 

</script> 

このコードは、Safariで動作しません。どのようにサファリでajaxの成功の後にフォームを提出するのですか?

答えて

0

文字列を実行しようとしています。変数form_は、実行時に使用できない場合があります。

setTimeoutは、このようにして、form_a変数にclosureでアクセスするようにする必要があります。

setTimeout(function() { 
    form_a.submit(); 
}, 3000); 
+0

ありがとうございますが、サファリでは動作しません。 – totoaussi

+0

私はサファリ9.0.3を使用していて、正常に動作します。 URバージョンの問題かもしれません。 'form_a = document.getElementById(" form_a ");'にデバッガを置き、実行したかどうかを確認します。 – Panther

+0

はい私はサファリ5.1.7を使用します。あなたはサファリ5でそれを試してみて、私を確認できますか? – totoaussi

関連する問題