2017-06-11 5 views
-2
、私は次の関数をwithingロジックを考え出す苦労してい

:私のロジックを1として onreadystatechangeにロジック

function confirm() { 
    var http = new XMLHttpRequest(); 
    var url = "promote.php?user=' . $link . '"; 
    var params = "confirm_ref=' . urlencode(encrypt($reff,$key)) . '"; 
    http.open("POST", url, true); 
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    http.onreadystatechange = function() { 
    if(http.readyState == 4 && http.status == 200) { 
    } 
    } 
    http.send(params); 
} 

は、 http.send(params);を右 http.readyState == 4 && http.status == 200条件の後に含めるべきです。しかし、私がそれをすれば、それはもはや働かない。

おそらく誰かがonreadystatechangeにするために割り当てた機能が実行されるコールバック関数です...どのように私は2つの条件(readyStateのとステータス)がポストを送信する前に満たされていることを確認することができます

+0

投稿によって設定されていないため、返信によって設定されます。 –

+0

その条件文の中で何が起きるかは、サーバーから応答が返ってからブラウザが行うことです。 –

答えて

1

を説明することができますreadystatechangeイベントが発生します。これはいつでも発生する可能性があるため、関数を割り当てるときにプログラムフローをブロックしないでください。

これで、4-DONE状態に達したことを明示的に処理します。つまり、「データ転送が完了したか、転送中に何か問題が発生しました(無限リダイレクトなど)」。また、サーバーからのステータスが200-OKであることを確認する必要があります。両方とも要求を送信した後にのみ存在し、サーバーはステータスコードを返しました。したがって、要求を送信する前にこれらの条件をチェックすることは意味がありません。