家の中でのこだわりスペースはどこですか?

apache2でAjaxの試しとして下記スクリプトだけのhtmlファイル(http://localhost/newfile.html)
作り動作を確認してみました(空白部分は全角になっています)。すると最後の部分の
alert("Error: readyState code is " + request.readyState);で
2→アラートのOKを押す→一瞬1になり3→アラートのOKを押す→一瞬1になり0→アラートのOKを押すと1になりました。そしてコンソールには
------------------------------------------------
GET http://localhost/a.php 200 OK 60ms
Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)
request.send(url);
------------------------------------------------
といったエラー表示がでてしまいます。

また、request.openで渡すURLの「http://localhost/a.php」を「a.php」にすると、
一瞬1になり2→アラートのOKを押す→一瞬1になり0→アラートのOKを押すと1
になります。なぜ4にならないのでしょうか。
request.statusは全部0になっているようです。

<script language="javascript" type="text/javascript">
var request = false;
try {
  request = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      request = false;
    }
  }
}

if (!request)
  alert("Error initializing XMLHttpRequest!");
window.onload = getCustomerInfo;

function getCustomerInfo() {
var url = "test";
request.open("GET", "http://localhost/a.php", true);
request.onreadystatechange = updatePage;
request.send(url);
}

function updatePage() {
if (request.readyState == 4){
if(request.status == 200){
   var response = request.responseText;
         document.write(response);
}else 
if (request.status == 404){
  alert("Request URL does not exist");
    }else{
    alert("Error: status code is " + request.status);
}
}else{
  alert("Error: readyState code is " + request.readyState);
}
}
</script>

A 回答 (1件)

readyStateは4以外がエラーというわけではなく、通信中はその受信状態に応じて1~4を変動します。


4になっていると思いますが、document.write()のエラーではないでしょうか。
document.write()が使える条件、使えない条件を調べてみてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
document.write()は影響していなさそうです。
alertでも試してみましたが同じ結果になります。

先ほど気が付いたのですが、エラーの内容を勘違いしていたところがありました。

Error: readyState code is 2
Error: readyState code is 3
Error: status code is 0
Error: readyState code is 1

この順でエラーのアラートが表示されていました。
HTTP Readyが4以外のときは「Error: readyState code is」のエラーメッセージが必ずでる形にしてあるので、2番目までは正常だと思います。3番目はHTTP Readyが4で、status codeが0になっています。そして、なぜ一旦HTTP Readyが4になったのに4番目に再度試されているのかは不明ですが、status codeが0になったときは再度試すみたいな機能があるのでしょうか。

ローカルでサーバーを使っている以上、status codeが0になってしまうのでしょうか。
ブラウザはFirefoxを使っています。

お礼日時:2012/03/15 00:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報