2011-09-02 3 views
0

XMLファイルのURLを受け取るクラスを作成しようとしています。次に、XMLファイルを解析し、メンバー変数内にデータを保存する必要があります。ここで私は何をしようとしているのストリップダウンテストバージョンです:クラス内からjQueryを使用してXMLファイルを解析する

function Test(filename) { 
    this.type = "type not set"; 
    $(document).ready(function() { 
     $.ajax({ 
      type: "GET", 
      url: filename, 
      dataType: "xml", 
      success: function(xmlDoc) { 
       var xml = $(xmlDoc) 
       this.type = xml.find("type").text();     
      }  
     }); 
    }); 
} 

私は、この関数を実行し、その後ますdocument.writeln(test.type)を呼び出す場合は、必ずプリントアウトされた「タイプが設定されていません」。 this.typeをxmlの値と定義している内部関数内に書き込むと、私は期待する値を見ます。

実際の関数呼び出しから非同期でXML解析を行う必要があるという事実が問題であると仮定します。しかし、私はそれを回避する方法を考え出すことはできません。

ご協力いただければ幸いです。ありがとう。

答えて

1

あなたの二thisは最初thisよりも、何か他のものを指し:

試してみてください。そして、

function Test(filename) { 
    var that=this; 

ともあなただけの後の変数にアクセスしていることを確認してくださいthis.type

の代わりにthat.typeを使用しますsuccessコールバックが発生しました。関数内の変数を使用するコードを記述し、その関数をsuccessから呼び出すことができます。