2011-08-21 20 views
5

私はページ上で結合している2つのjQuery Ajax呼び出しを持っています。私はそれぞれsuccess: function(msg)success: function(data)であるので、それぞれsuccess: function()についています。私は、これらの両方が意味することと、組み合わされたコードで何をすべきかについては不明です。私は以下の2つのコールを別々に配置し、それまでのように組み合わせます。jQuery Ajaxコールで `success:function(msg)`とは何を意味しますか?

Ajaxリクエスト#1:この機能のPHPページには$msg .= "<div class='pagination'><ul>";があります。これがこれを参照しているのかどうかはわかりません。

$.ajax 
({ 
    type: "GET", 
    url: "new_arrivals_data.php", 
    data: "page="+page, 
    success: function(msg) 
    { 
     $("#gallery_container").ajaxComplete(function(event, request, settings) 
     { 
      gallery_show(); 
      loading_hide(); 
      $("#gallery_container").html(msg); 
     }); 
    } 
}); 

Ajaxリクエスト#2:私の知る限り見ることができるように、この呼び出しのPHPファイルにはdataどこでもはありません。 function(data)は何を意味するのか分かりません。

$.get("new_arrivals_data.php",{imgs: value}, function(data){ 
    $("#gallery_container").html(data); 
}); 

合わせて要求:私はそれの場所に置くことが何か不明だとしてmsgは、元のコールにあった?を入れています。

$.ajax 
({ 
    type: "GET", 
    url: "new_arrivals_data.php", 
    data: {page:page, imgs: value}, 
    success: function(?) 
    { 
     $("#gallery_container").ajaxComplete(function(event, request, settings) 
     { 
      gallery_show(); 
      loading_hide(); 
      $("#gallery_container").html(?); 
     }); 
    } 
}); 

答えて

3

msgdataは単に仮パラメータの名前です。それらを使用して、呼び出されたときにその関数に渡される応答データを参照します。

任意の有効なJavaScript識別子に名前を変更できます。

success:コールバック内ajaxCompleteを呼び出すする理由は本当にありませんが:

success: function(whatever_you_want_to_call_it) { 
     gallery_show(); 
     loading_hide(); 
     $("#gallery_container").html(whatever_you_want_to_call_it); 
} 

$.get("new_arrivals_data.php",{imgs: value}, function(i_like_ice_cream){ 
    $("#gallery_container").html(i_like_ice_cream); 
}); 

は両方のケースでは、あなたが機能を渡しだ、覚えておいてください議論として。この関数は、応答を受け取ったときに呼び出されます。

その関数を呼び出すコードが何であれ、それにアクセスできるように、最初の引数としてその関数に応答を渡します。そのため、パラメータを定義しました。

これは、関数内で変数を宣言するのと非常によく似ています。

$.get("new_arrivals_data.php",{imgs: value}, function(){ 

    var i_like_ice_cream = arguments[0]; 
    $("#gallery_container").html(i_like_ice_cream); 

}); 

これはほとんど同じことです。コールバック関数に渡された最初の引数を変数に関連付けました。

+0

文字通り何でもできると言っていますか?それは、PHPファイルとは関係がありませんか? – stefmikhail

+0

@stefmikhail:有効なJavaScript変数名。それはPHPとは関係ありません。これは、関数内で変数を宣言するのと同じです。 'function(){var msg = arguments [0]; /*...*/}は事実上同じです。 – user113716

1

これは、ajax呼び出しから返された応答データを含む変数の名前です。コンテキストに最も合った名前を付けて、コードを読みやすくします。 html,resp,logged

2

任意の有効な変数名を使用できます。 dataまたはmsgは、その機能の範囲内で同じものを使用しているかぎり、機能します。

説明すると、successは無名関数に設定されています。名前を持たない関数です。したがって、jQueryがsuccessイベントを送出するときに、ajaxリクエストを作成するときに与えた関数を呼び出します。また、その関数にいくつかの引数を渡します(この場合、ajaxリクエストからの結果データ)。あなたが定義しているのは、この新機能の範囲で入ってくる情報を呼び出すべきものです。

例えば、次のコードを取る:あなたはworkOnBobは関数であり、それは匿名関数を渡す必要があることがわかります

function workOnBob(aWorker) { 
    aWorker("Bob") 
} 

var sayHi = function(name) { alert("Hello " + name); }; 
var getMarried = function(groom) { alert(groom + " is getting married!"); }; 

workOnBob(sayHi); // "Hello Bob" 
workOnBob(getMarried); // "Bob is getting married!" 

。それは文字列"Bob"でその関数を呼び出します。また、匿名関数sayHigetMarriedには、それぞれ受け取った引数に独自のスコープ(それぞれnamegroom)が付けられています。彼らは両方とも文字列 "Bob"を取得しますが、どちらもそれを別のものと呼ぶことを選択します。

匿名の関数とクロージャは混乱する可能性がありますが、一度それらのハングを取得すると、彼らは多くの楽しみです。

+0

すばらしい答え!今私はずっとよく理解しています。私が聞くことができる誰も知らずに、このすべてのことを学ぶことは難しいです。興味深いことに、上からの呼び出しはすべて 'function loadData(page){}'の中にあります。そのページは上記の説明とは何か違うのですか?コードの後半では、次のように呼び出されます: 'loadData(1)'。これは何を意味するのでしょうか? – stefmikhail

+0

ところで、あなたのユーザーネームが大好き! – stefmikhail

関連する問題