2017-01-02 20 views
1

私はここでちょっと混乱しています。javascript-show loader in ajax呼び出し&成功後に非表示

私はJavaScriptでフォームを作成し、PHPページ(submit.php)に値を掲示し、PHPページが成功を返した場合、私は別のページにユーザーをリダイレクトしますsuccess.php

var url = 'submit.php'; 
var furl = 'success.php'; 
var formdata = new FormData(); 
formdata.append("name", 'John'); 
formdata.append('staffid',123); 
formdata.append('csrf_test_name',csrf_token); 

var ajax = new XMLHttpRequest(); 
ajax.addEventListener("load", function(event) { 
    uploadcomplete(event,furl); 
}, false); 
ajax.open("POST", url); 
ajax.send(formdata); 

function uploadcomplete(event,furl) { 
    var response = event.target.responseText.trim(); 
    if(response=='Failed') { 
     alert('Failed'); 
    } else { 
     alert('Success'); 
     window.location.replace(furl); 
    } 
} 

function showLoader(){ 
    document.getElementById('loader').style.display = 'block'; 
} 

function hideLoader(){ 
    document.getElementById('loader').style.display = 'none'; 
} 

シングは、Iでいますフォームデータが処理されているときにローダーアイコンを表示し、完了したらフォームデータを非表示にする。そのために、私は2つの関数を作成しましたshowLoader()hideLoader()

私はこれらの関数をどこに含めるべきですか?

答えて

1

あなたがしてreadyStateでそれを使用することができますonreadystatechangeイベント:

var ajax = new XMLHttpRequest(); 
ajax.onreadystatechange = function(){ 
    if(ajax.readyState === 0){ 
    showLoader(); 
    }else if(ajax.readyState === 4){ 
    hideLoader(); 
    } 
}; 

またはあなたのコード内で、あなたはここでそれらを呼び出すことができます:プレーンJSで

var ajax = new XMLHttpRequest(); 
ajax.addEventListener("load", function(event) { 
    uploadcomplete(event,furl); 
    hideLoader(); //<------------------hide the loader here when done. 
}, false); 
ajax.open("POST", url); 
showLoader(); // <------------------call and show loader here. 
ajax.send(formdata); 
1

あなたはそうのようにそれを実行します。

要求が進行中:行わロード

ajax.addEventListener("progress", showLoader); 

ajax.addEventListener("load", hideLoader); 
+0

、私は「(ajax.addEventListenerを含める必要があります(イベント、furl);}、偽);これら2つの間で、右か? @Faouzi Oudouh –

+0

'ajax.open()'の直前にインクルードします。 –

0

を、あなたはこのようにそれを行うことができます:だから

function loadData() { 
    var ajax = new XMLHttpRequest(); 

    ajax.onreadystatechange = function() { 
     if (ajax.readyState === 4) { 
      if (ajax.status === 200) { 
       hideLoader(); 
       //your code after ajax response, use ajax.responseText 
      } 
      else { 
       console.log('Some error...'); 
      } 
     } 
    }; 

    ajax.open("POST", url); 
    ajax.send(formdata); 
    showLoader(); 

} 
関連する問題