• ベストアンサー
  • すぐに回答を!

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

  • 質問No.3246213
  • 閲覧数3024
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 20% (1/5)

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
  • ベストアンサー

ベストアンサー率 44% (1016/2281)

> 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

お礼率 20% (1/5)

>まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
>そういうことはないですよね?
>アクセスするアドレスってどうなってます?
>ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?
error.logに関しては申し訳ありませんでした。設定ミスでした。
それでもいままで動いてました。

>> 『ローカル上ではstatusは0になる』
>語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
>つまり、file:///~のようなアドレスになる場合にstatusを受け取れません。
>ローカルでもウェブサーバーを使っていればstatusコードを受け取れます。
これが問題でした。
作ったHTMLファイルをクリックして動かしていたためstatus=0 になっていたようです。

これでやっと先に進めます。ありがとうございました。
投稿日時:2007/08/12 12:05

その他の回答 (全2件)

  • 回答No.2

ベストアンサー率 43% (418/971)

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

お礼率 20% (1/5)

全然気がつきませんでした。いままで使ったことがなかったので…。

ページを動かして確認したところ、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にしか書き込みがないという時点で失敗なのがよく分かりました。
投稿日時:2007/08/12 00:30
  • 回答No.1

ベストアンサー率 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ヘッダを受け取れないからだと思うね・・・
補足コメント
clustfe

お礼率 20% (1/5)

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で追加すればよいのでしょうか?
投稿日時:2007/08/11 18:06
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ