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

JavaScriptで、あるURLの結果を取得しようと以下のようなスクリプトを組みました。
var xmlHttp = false;
function loadText(){
xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "http://hogehoge, true);
xmlHttp.onreadystatechange = checkStatus;
xmlHttp.send(null);
}
function checkStatus(){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
res = xmlHttp.responseText;
alert(res);
}
}

IE8では、結果が取得できたのですが、firefox4.0.1,Chromeでは取得できませんでした。
xmlHttp.status が0となってしまいました。
ただし、GET対象のURLをローカルサーバにすると、取得することができました。
firefox4.0.1,Chromeのブラウザの設定なのでしょうか?それともスクリプトの書き方に問題があるのでしょうか?
すみませんが、教えてください。

A 回答 (3件)

ウェブサーバに HTML ファイルを置いて試してみて!

この回答への補足

CentOS上にapache2.2.19を立ち上げで、そこのhtdocsディレクトリ配下にHTMLファイルを置いて実行しています。

補足日時:2011/06/21 14:31
    • good
    • 0

クロスドメイン制約のことかな?



http://ja.wikipedia.org/wiki/XMLHttpRequest#.E3. …
「基本的には、XMLHttpRequestは同一ドメインとしか通信ができない」
    • good
    • 0

ご自分でアップデートしつつ確認して下さい。



var xmlHttp = null;

function loadText () {
 try {
  xmlHttp = new XMLHttpRequest();
 }
 catch (err) {
  // XMLHttpRequest が存在しない
  alert(err); throw err;
 }
 try {
  xmlHttp.open("GET", "http://hogehoge, true);
 }
 catch (err) {
  // (1). Firefox 3.5 でドメイン制限に引っかかった
  // (2). Opera 10.10、Safari 4.1 でエラーを出した XHR を再利用した
  alert(err); throw err;
 }
 try {
  xmlHttp.onreadystatechange = checkStatus;
  xmlHttp.send(null);
 }
 catch (err) {
  /*@cc_on @if (1)
   // IE 6.0 でローカルファイルにアクセスした
   // ファイルは取得できているので例外を潰す
  @else@*/
   // IE 6.0、Opera 10.10 でドメイン制限に引っかかった
   // Safari 4.1 はドメイン制限時にエラーコンソールに通知するが例外発生しない
   alert(err); throw err;
  /*@end@*/
 }
}

function checkStatus (e) {
 var status;
 
 if (xmlHttp.readyState !== 4 /*XMLHttpRequest.DONE*/) {
  return;
 }
 try {
  status = xmlHttp.status;
 }
 catch (err) {
  // Firefox 2.0 で XHR を abort() している
  alert(err); throw err;
 }
 try {
  if (status < 100) {
   // IE 6.0 でローカルファイルにアクセスした
   alert(xmlHttp.responseText);
  }
  else if (status < 200) {
   // 1xx(情報提供)
  }
  else if (status < 400) {
   // 2xx(成功)、3xx(転送)
   alert(xmlHttp.responseText);
  }
  else {
   // 4xx(クライアントエラー)、5xx(サーバエラー)
  }
 }
 catch (err) {
  // その他いろいろ
  alert(err); throw err;
 }
}
    • good
    • 0
この回答へのお礼

ありがとうございます。動かしながら確認してみます。

お礼日時:2011/06/22 21:14

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