プロが教えるわが家の防犯対策術!

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_stu …
その上で、
  if ((httpObj.readyState == 4) && (httpObj.status == 200))
  {
    displayData();
  } else {
    document.ajaxForm.result.value = httpObj.status;
  }
としました。


これで2日悩んでいるので、解決したいのです。
よろしくお願いいたします。

A 回答 (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文の前に書いた方がいいと思います。(たぶん動くと思うので)
    • good
    • 1
この回答へのお礼

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

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

これでやっと先に進めます。ありがとうございました。

お礼日時:2007/08/12 12:05

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にしか書き込みがないという時点で失敗なのがよく分かりました。

補足日時:2007/08/12 00:30
    • good
    • 0

自信なし・未検証



Content-Type HTTPヘッダはどうなっている?


http://www.kawa.net/works/ajax/tips/mimetype/con …

http://www.pearweb.com/javascript/XMLHttpRequest …

>ローカル上では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で追加すればよいのでしょうか?

補足日時:2007/08/11 18:06
    • good
    • 0

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