2011-07-13 14 views
0

まず、完全なjavascriptとjQueryのnoobです。この質問がダムであればごめんなさい。しかし、私は実際には、jQueryのドキュメントまたはGoogleの回答を見つけていないjqxhr.complete関数のresponseTextへのアクセス方法

私は応答が完了したときに応答を実行しようとしています しかし、私はresponseTextにアクセスすることはできません。私は印象の下にjqxhr objextにメンバーのresponseTextがありました。私は次のエラー 'responseTextが定義されていません'を取得します。

this.load = function(fileName, actionFunction){ 
    var jqxhr = $.post(SERVER,{command : "load", filename : fileName}) 
    .complete(function(){ 
     actionFunction(responseText); 
    }); 
} 

EDIT

私は

.complete(function(responseText){ actionFunction(responseText);} 

または何デイブ・ワード

を示唆して操作を行う場合、私は、エラーを得ることはありませんが、何も私はそれがにISN知っ

を起こりません私は文字列をテスト目的のために手動で入力すると、それは私が期待するものを実行するので、actionFunction() o。

どのパラメータが過去になっているかを調べようとしているとき(action関数内でコンソールに出力されます)、私は[object Object]を取得します。文字列(文字列(パラメータ))に変換しようとしている

のEND EDIT

私が間違って何をやっているか、どのように私は.complete機能でresponseTextにアクセスしない場合でも?事前

答えて

1

のメソッドは、あらかじめ定義されたパラメータを使用して呼び出されます。 jqXHRtextStatusjqXHR実際XMLHTTPRequestオブジェクトである:the documentation on the ajax function from jQuery's websiteから

completeコールバックは、パラメータを渡されます。

だから、それはあなたがあなたのハンドラに渡したいパラメータです:Dave Ward says in his answerように、この場合のresponseTextが「成功」または「エラーのように、実際にはステータスインジケータである、ということ

.complete(function(jqXHR, responseText) { 
    actionFunction(responseText); 
}); 

注意"(したがって、jQueryの名前、" textStatus ")。あなたは、変数名に単語「応答」を持って考えると(彼はあるように)、私はあなたがおそらく代わりcompletesuccessコールバックを望んでいることを推測している:パラメータからプリントアウトする際に

.success(function(data, textStatus, jqXHR) { 
    actionFunction(renderDataToString(data)); 
}); 
+0

あなたの助けを大変ありがとう – danny

0

TNXは、問題はあなたが内からactionFunctionを呼び出すときに、それが定義されていないので、あなたは、あなたの匿名関数でその応答パラメータをキャプチャしていないということです。あなたはこのようにそれを修正することができます:

.complete(function(responseText) { 
    actionFunction(responseText); 
}); 
良い

まだ、あなたにはJavaScriptの機能な性質を利用することができ、ちょうど.completeするコールバックとして関数自体を渡す:

.complete(actionFunction); 

あなたactionFunctionます自動的に期待するパラメータで呼び出されます。

+0

両方のケースでは何も起こりませんfirebugのactionFunctionに与えられた私は[オブジェクトオブジェクト]を取得します。私はString(パラメータ)を使ってみましたが、うまくいきませんでした。 – danny

+0

あなたがしようとしているような音から、.completeの代わりに.successコールバックが必要だと思います。最初のパラメータはPOSTから返されるデータです。 .completeはより一般的な目的であり、未処理の応答自体ではなく、パラメータとしてjqXHRとstatusを渡します。 –

+0

ご協力いただきありがとうございました。あなたの答えがコメントであったので私はダン・タオを答えとして選んだ – danny

関連する問題