2011-06-30 5 views
1

免責条項:thisの具体的な使用について質問していますが、一般的にはthisが使用されていません。だから、無グーグル/コピー/ペーストスピード回答(してください:私はそれはかなり混乱コードは2つの場所でfromPageを使用していることがわかります(ごめんない"this"は次のjavascriptで何を参照していますか?

var req = {}; 

function getData() 
{ 
    var fromPage = 0; 
    var toPage = 1; 

    req = $.ajax({ 
        url: "/_vti_bin/lists.asmx", 
        type: "POST", 
        dataType: "xml", 
        data: xmlData, 
        complete: onSuccess, 
        error: function (xhr, ajaxOptions, thrownError) { 
         alert("error: " + xhr.statusText); 
         alert(thrownError); 
        }, 
        contentType: "text/xml; charset=\"utf-8\"" 
       }); 

    req.fromPage = fromPage; 
    req.toPage = toPage; 
} 

function onSuccess(resp) { 
    alert(this.fromPage); 
} 

:私は以下のjavascript/jqueryのコードを持って

私のコード)。

thisがVARを参照していますがgetDataの内で宣言またはreqオブジェクトの一部である1?それとも完全に何か他のもの....

どれヘルプappreci ated。

+2

'}、50);'どこか外れているようです... –

+0

@kingjiv、良いキャッチです。申し訳ありませんが、これはより大きなコードの単純化されたバージョンです。 –

+0

"、、50);が続く関数宣言の構文で少し混乱しています。ここに括弧と閉じ括弧が追加されていますか? – kinakuta

答えて

5

jQuery.ajaxドキュメントによると:

すべてのコールバック内のこの参照は設定で$アヤックスに渡されたコンテキストオプションでオブジェクトです。コンテキストが指定されていない場合、これはAjax設定自体への参照です。言い換えれば

あなたがcontextオプションを設定しなかったので、thisオプションが$.ajaxにパラメータとして渡さ{...}をオブジェクトになります。

投稿したコードが間違っているようです。間違ったオブジェクトからfromPageが読み込まれます。

req = $.ajax({ 
    //other options here... 
    fromPage: fromPage 
}); 
+0

華麗な、それだった。ありがとう –

2

onSuccess()reqオブジェクトに割り当てられているのAjaxリクエストのコンテキストでcompleteハンドラから呼び出されているので、thisそのコンテキストがあり、:あなたはオプションにfromPageを設定する代わりに、オブジェクトの場合は動作します - 私はそれが呼び出される関数を含むオブジェクトであるため、thisreq.fromPageに参照のうえれる信じreqオブジェクト、すなわち、およびfromPageは、実際にreq.fromPage

+0

だから 'this'は' req'と同じでしょうか? –

0

です。

関連する問題