21

私はphpでログインシステムを実装し、ajaxリクエストを使用しています。

これは私の要求です

hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

hr.onreadystatechange = function() {

    var return_data = hr.responseText;
    if(hr.readyState == 4 && hr.status == 200) {
        alert('is logged');
    }else if (hr.status == 400){
        alert('is not logged');
    }
}


hr.send(vars); // Actually execute the request

しかし、応答を返すと、ブラウザーはさまざまなアラートを起動します。誰でもこれを修正する方法を手伝ってもらえますか?

4

1 に答える 1

42

ええ、それは正常に機能しています....... onreadystatechangeは、1 つのリクエストで複数回呼び出される可能性があります..そして、両方の条件を警告するために、リクエストが問題ない場合は常に200です。

それは警告します:

「ログに記録されていません」

そして、readystate=4を取得しOk signal、アラートを出すと、次のようになります。

ログインしました。

それで

readyState =4 --> リクエストが終了し、レスポンスが準備できました

status= 200 --> サーバーによってリクエストが正常に処理されたことを意味します。

したがって、少なくともリクエストが正常に処理されたため、2 番目のアラート ポップアップが表示されます。詳細について は、 https

://www.w3schools.com/js/js_ajax_http_response.asp をご覧ください 。


     xhrobj.onreadystatechange = function()
    {
      if (xhrobj.readyState == 4 && xhrobj.status == 200)
      {
        if (xhrobj.responseText)
         {
                //put your code here 
           document.write(xhrobj.responseText);
          }
       }
     };

于 2013-01-13T18:04:25.510 に答える