- ベストアンサー
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日悩んでいるので、解決したいのです。 よろしくお願いいたします。
- みんなの回答 (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文の前に書いた方がいいと思います。(たぶん動くと思うので)
その他の回答 (2)
- Bonjin
- ベストアンサー率43% (418/971)
Apacheのログは確認してみましたか? Ajaxのリクエストが出ているならログに残るはずです。 ログが出ていなければ元々リクエストが出ていないのですからStatusが0でも不思議ではありません。 まずはリクエストが出ているか確認してください。
補足
全然気がつきませんでした。いままで使ったことがなかったので…。 ページを動かして確認したところ、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にしか書き込みがないという時点で失敗なのがよく分かりました。
- himajin100000
- ベストアンサー率54% (1660/3060)
自信なし・未検証 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ヘッダを受け取れないからだと思うね・・・
補足
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で追加すればよいのでしょうか?
お礼
>まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、 >そういうことはないですよね? >アクセスするアドレスってどうなってます? >ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか? error.logに関しては申し訳ありませんでした。設定ミスでした。 それでもいままで動いてました。 >> 『ローカル上ではstatusは0になる』 >語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、 >つまり、file:///~のようなアドレスになる場合にstatusを受け取れません。 >ローカルでもウェブサーバーを使っていればstatusコードを受け取れます。 これが問題でした。 作ったHTMLファイルをクリックして動かしていたためstatus=0 になっていたようです。 これでやっと先に進めます。ありがとうございました。