0

基本を学び、概念を紹介する方法として、簡単なAJAXコードを書いています。次のコードは、サーバー上にあるテキストファイルの内容を取得して変数に渡し、アラートボックスに表示されます。

私の問題は、コードがEclipseIDEの「Webブラウザで開く」で完全に実行されることですが、他の場所では実行されません。

var http = createRequestObject();
var responseContent;

function createRequestObject() {
   var objAjax;
   var browser = navigator.appName;
   if(browser == "Microsoft Internet Explorer"){
       objAjax = new ActiveXObject("Microsoft.XMLHTTP");
   }else{
       objAjax = new XMLHttpRequest();
   }
   return objAjax;
 }

function getContent(name){
   http.open('get', name);
   http.onreadystatechange = function() {
       if (http.readyState == 4) {
          responseContent = http.responseText;
       }
   };
   http.send(null);
 }   

 $(document).ready(function() {
   getContent('newcontent.txt');
   alert(responseContent);
 });

なぜこれが起こるのか誰かが知っていますか?コードに問題はありますか?もしそうなら、なぜそれは日食ではうまくいくのに他の場所ではうまくいかないのでしょうか?

ありがとう

4

1 に答える 1

0

簡単な答えに要約すると:

は関数XHRで送信され、getContentリスナーが接続されます。

次に、にgetContent戻り、実行は未定義の変数に警告しますresponseContent

ある時点でXHRに応答し、リスナーへのreadyState変更が呼び出されます。4

responseContent変数が割り当てられるのはそのときだけです。

于 2012-11-04T22:45:02.800 に答える