2012-01-19 8 views
4

私は本当のシンプルなjquery get callをここに持っています。後でそのスクリプトでその応答を使いたいと思います。私はこれを行うのであれば:jqxhr.responseText変数がxhrオブジェクトに設定されていると、未定義の理由は何ですか?

var xhr = $.get('cfc/partsDefinition.cfc',{ 
       method: 'checkValid', 
       search: 'some search string' 
      } 
     ); 
     console.log(xhr); 
     console.log(xhr.responseText); 

を私はA)は最初のログが...私は期待に設定responseTextプロパティを使用して、

promise: function (a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a} 
readyState: 4 
responseText: "0" 
setRequestHeader: function (a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this} 

が、B)を有効jqxhrオブジェクトを示していることがわかります2番目のログは "undefined"を示します。私はここで何が欠けていますか?

+0

あなたの特定の技術的なポイントは、少し奇妙に聞こえるんが、私は疑問があると思います....なぜあなたはその時点で、それが必要なのでしょうか?非同期リクエストを作成しているので、作業したい値はまだ使用できず、コールバック関数内でのみ使用可能になります(これはあなたが提供していないことがわかります)。 –

+0

私は危険なためにajaxを使うのに十分新しくなっていますね...私は、コールバック関数を使って応答の内容をjs変数に代入しようとしましたが、ajaxの非同期部分の派生について忘れてしまいました。だから私はどちらかのコールバック内の応答変数を使用するか、非同期呼び出しを使用する必要があります...私は試しましたが、responseText( "コンポーネントブラウザログイン"という名前のhtmlページ "以下のRDSまたは管理パスワード」を参照)。投稿するのとは異なる質問のようです。 – earachefl

+1

p.s.私はまだconsole.logが有効な、完全に形成されたxhrオブジェクトを表示する理由を理解できませんが、xhr.responseTextの次のログは未定義を示しています。 – earachefl

答えて

3

コードのその時点では、定義されていないため、undefinedが表示されています。 AJAXは非同期です。つまり、コードが実行された後にコードが完了する前に完了しません。 responseTextは、ajax呼び出しが完了するまで未定義になります。ここでは例です:

var xhr = $.get('cfc/partsDefinition.cfc',{ 
       method: 'checkValid', 
       search: 'some search string' 
      } 
     ).done(function(data){ 
      console.log("xhr",xhr); 
      console.log("xhr.responseText",xhr.responseText); 
      console.log("data",data); 
     }); 
console.log("This should happen before the other console logs"); 
1

は、合意された - それは存在しないとき、あなたはおそらくそれを投棄しています。いくつかのエラー処理を追加してみてください:jQueryので

 $.get('cfc/partsDefinition.cfc',{ 
       method: 'checkValid', 
       search: 'some search string' 
      }, 
      function(data, textStatus, jqXHR){ // Success Case 
       console.log(data); 
       console.log(jqXHR); 
      } 
     ); 

     $('.errorContainer').ajaxError(function(event, jqXHR, ajaxSettings, thrownError){ 
        $(this).append('ohhhhz noooz - ajax error'); 
      console.log(event); 
      console.log(jqXHR); 
      console.log(ajaxSettings); 
      console.log(thrownError); 
     }); 

get()速記は、任意のエラー処理に組み込まれていない - それはちょうどそれをsupresses。だからあなたが何かをキャッチしようとしているなら、あなた自身のエラーハンドラを作る必要があります。

http://api.jquery.com/ajaxError/

関連する問題