0

まず第一に、私はjQueryにはまっていますが、フレームワークフリーでできるだけ軽量なものを作成したいので、自分自身をajaxしています。

私はこのコードを持っています:

    function ajax(url)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        console.log(xmlhttp.responseText);
    }
   else
        console.log( "error");
  }
xmlhttp.open("GET",url,true);
xmlhttp.send();
}

を使用して頭の中で一度呼び出します:

ajax("url");

ただし、コンソールに 3 つの「エラー」ログが表示され、4 つ目は rsponseText です。

なぜそれが起こるのか、どうすれば回避できるのか誰でも知っていますか? 私のページには他のスクリプトがありません。

4

4 に答える 4

1

はい、すべての州の onreadystatechange 呼び出し.... http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.aspの詳細情報

これを試して

if (xmlhttp.readyState==4) {
  if(xmlhttp.status==200) {
    console.log(xmlhttp.responseText);
  } 
  else {
     console.log('error');
  }
}
于 2012-12-04T13:19:02.330 に答える
0

これはバグではなく、エラーでもありません。表示されるのは onready statechange イベントであり、常に else ブロックにログインします。httpObject には、成功と失敗の状態だけではありません。

こちらをご確認ください

ご覧のとおり、4 つの状態があり、xmlhttp.readyState==4 && xmlhttp.status==200実際の成功、要求の完了、およびサーバー エラーがないことのみを意味します。

于 2012-12-04T13:19:49.807 に答える
0

これは、readyState が 1 から 4 の int に移動するためです (つまり、他のブラウザーでは小さい)。

試す:

xmlhttp.onreadystatechange=function(){
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    console.log(xmlhttp.responseText);
   else if(xmlhttp.readyState==4)
        console.log( "error");
}
于 2012-12-04T13:21:27.873 に答える
0
xmlhttp.onreadystatechange=function()

このコールバックは、readystate 4 および 200 以上で使用されます。エラー メッセージに xmlhttp.status を追加してみてください。

function ajax(url)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        console.log(xmlhttp.responseText);
    }
   else
        console.log( "error - readyState: "+xmlhttp.readyState);
  }
xmlhttp.open("GET",url,true);
xmlhttp.send();
}

ajax(url)複数回呼び出されることはありませんが、呼び出されますxmlhttp.onreadystatechange

于 2012-12-04T13:18:28.907 に答える