• ベストアンサー

Ajaxが動きません~『status=0』?

Ajaxを使うため、 web上のサンプルをとってきて実行してみたところ、動きません。 いろいろ調べてみたところ、 通常  if(httpObj.status == 200) などで使われるstatusが0になっていることが分かりました。 どこかで  『ローカル上ではstatusは0になる』 という記述を見たのですが、Apache2.0.59が入っています。 Apacheが入っていてもstatusは0になるのでしょうか? 今回使用したサンプルは以下のサイトをのモノを貼り付けました。 http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/004/index.html その上で、   if ((httpObj.readyState == 4) && (httpObj.status == 200))   {     displayData();   } else {     document.ajaxForm.result.value = httpObj.status;   } としました。 これで2日悩んでいるので、解決したいのです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。 Apacheの起動に失敗してるのでは? まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、 そういうことはないですよね? アクセスするアドレスってどうなってます? ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか? > 『ローカル上ではstatusは0になる』 語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、 つまり、file:///~のようなアドレスになる場合にstatusを受け取れません。 ローカルでもウェブサーバーを使っていればstatusコードを受け取れます。 蛇足になりますが statusを見るだけだったらContent-typeは関係ないですよ。 ファイルが有れば200、エラーならそのエラーコードが入ります。 404 FileNotFoundとかのHTTP Status codeと同じですので。 >   if ((httpObj.readyState == 4) && (httpObj.status == 200)) >   { >     displayData(); >   } else { >     document.ajaxForm.result.value = httpObj.status; >   } この書き方では、else文はたぶん意味はないと思います。 readyStateの変遷を見るためなら document.ajaxForm.result.value += httpObj.readyState + ', '+ httpObj.status + '\n'; 、、、を、if文の前に書いた方がいいと思います。(たぶん動くと思うので)

clustfe
質問者

お礼

>まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、 >そういうことはないですよね? >アクセスするアドレスってどうなってます? >ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか? error.logに関しては申し訳ありませんでした。設定ミスでした。 それでもいままで動いてました。 >> 『ローカル上ではstatusは0になる』 >語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、 >つまり、file:///~のようなアドレスになる場合にstatusを受け取れません。 >ローカルでもウェブサーバーを使っていればstatusコードを受け取れます。 これが問題でした。 作ったHTMLファイルをクリックして動かしていたためstatus=0 になっていたようです。 これでやっと先に進めます。ありがとうございました。

その他の回答 (2)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

Apacheのログは確認してみましたか? Ajaxのリクエストが出ているならログに残るはずです。 ログが出ていなければ元々リクエストが出ていないのですからStatusが0でも不思議ではありません。 まずはリクエストが出ているか確認してください。

clustfe
質問者

補足

全然気がつきませんでした。いままで使ったことがなかったので…。 ページを動かして確認したところ、error.logに更新がありました。 [Sun Aug 12 00:14:33 2007] [notice] Parent: Received restart signal -- Restarting the server. [Sun Aug 12 00:14:33 2007] [notice] Child 2020: Exit event signaled. Child process is ending. PHP Warning: PHP Startup: Unable to load dynamic library 'c:/php5/ext/php_exif.dll' - \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'c:/php5/ext/php_openssl.dll' - \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0 [Sun Aug 12 00:14:33 2007] [notice] Apache/2.0.59 (Win32) PHP/5.2.3 configured -- resuming normal operations [Sun Aug 12 00:14:33 2007] [notice] Server built: Jul 27 2006 15:55:03 [Sun Aug 12 00:14:33 2007] [notice] Parent: Created child process 4680 PHP Warning: PHP Startup: Unable to load dynamic library 'c:/php5/ext/php_exif.dll' - \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'c:/php5/ext/php_openssl.dll' - \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0 [Sun Aug 12 00:14:34 2007] [notice] Child 4680: Child process is running [Sun Aug 12 00:14:34 2007] [notice] Child 4680: Acquired the start mutex. [Sun Aug 12 00:14:34 2007] [notice] Child 4680: Starting 250 worker threads. [Sun Aug 12 00:14:34 2007] [notice] Child 2020: Released the start mutex [Sun Aug 12 00:14:35 2007] [notice] Child 2020: Waiting for 250 worker threads to exit. [Sun Aug 12 00:14:35 2007] [notice] Child 2020: All worker threads have exited. [Sun Aug 12 00:14:35 2007] [notice] Child 2020: Child process is exiting このことでしょうか? error.logにしか書き込みがないという時点で失敗なのがよく分かりました。

回答No.1

自信なし・未検証 Content-Type HTTPヘッダはどうなっている? http://www.kawa.net/works/ajax/tips/mimetype/content-type.html http://www.pearweb.com/javascript/XMLHttpRequest.html >ローカル上ではstatusは0になる ローカルなファイルはContent-Typeヘッダを受け取れないからだと思うね・・・

clustfe
質問者

補足

Content-Typeの設定を判定したところ、   text/xml [OK] text/xml   application/xml [OK] application/xml   application/rdf+xml [NG] null   text/plain [NG] null   text/html [NG] null   application/octet-stream [NG] null とでました。ほとんど動いてないみたいです。 Content-Type HTTPヘッダですが、Apacheの設定のことでしょうか? そうでしたら、AddTypeされているのは   AddType application/x-compress .Z   AddType application/x-gzip .gz .tgz   AddType text/html .html .shtml   AddType application/x-httpd-php .php の4種のみ、ほぼデフォルトのままです。 AddTypeで追加すればよいのでしょうか?

関連するQ&A

専門家に質問してみよう