2012-02-13 10 views
1

私のサイトでは以下のコードを使用しています。しかし、私たちはアラートを追加する場合のみajaxの仕事。Ajaxレスポンスの前にイベントが発生しました

$(document).submit(
     function(){ 

      if(document.getElementById('time_i').innerHTML != '') 
      { 
       var flag = false; 
       var str = document.getElementById("time_i").innerHTML; 
       if (window.XMLHttpRequest) 
        { xmlhttp=new XMLHttpRequest(); 
        } 
       else 
        { 
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
       xmlhttp.onreadystatechange=function() 
        { 
       if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        { 

        } 
        } 
       xmlhttp.open("GET","URL"+str,true); 
       xmlhttp.send(); 

       } 
     }); 

解決策を教えてください。

+0

私はあなたの質問が何であるかは分かりません。 – simchona

+2

あなたは明らかにAJAXの '非同期'部分を理解していません。 –

+0

私はちょうどajaxを使用してデータベースに値を格納したいと思います。サブミットイベントで送信するが、AJAXコールレスポンスの前にイベントを送信する...しかし、私は応答時にそれをデータベースに格納するので、我々はデータベースを追加する必要があるので、遅延を追加する必要があることを意味します.. – Drupalrk

答えて

1

先頭にある関数宣言の引数リストにeventを追加し、if文内にevent.preventDefault();と記述してください。これにより、フォームがあなたのページを変更するのを防ぐことができます。

とにかくページを変更したい場合は、最初はAjaxを使用するのではなく、通常の古いフォームを使用してください。

'AJAX'の '非同期'の側面は、呼び出しがブロックされないことです。すぐに戻り、完了したら関数にコールバックを行います。

+0

上記のコードは私のためには機能しません。ユーザーが次のページにリダイレクトしないからです。次の質問ページのように。 – Drupalrk

+0

ユーザーが自動的にリダイレクトされるようにするには、Ajaxのコールバック関数を作成する必要があります。このコールバック関数はAjaxリクエストの完了時に呼び出され、ブラウザを次のページに送信します。もちろん、これだけであれば、間違ったツールを実際に使っています。正しいツールはJavaScript(Ajax)を捨てて、プレーンなHTMLを使ってフォームを送信することです。 – Kitsune

関連する問題