我在页面上组合了两个jQuery Ajax调用。我被卡在每个success: function()
中,因为一个是success: function(msg)
而另一个是success: function(data)
。我不确定这些是什么意思,以及它们在组合代码中应该是什么。我将下面的两个电话单独放在一起,然后合并到目前为止。
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(?);
});
}
});
答案 0 :(得分:3)
msg
和data
只是形式参数的名称。您可以使用它们来引用在调用它时传递给该函数的响应数据。
您可以将其重命名为任何有效的JavaScript标识符。
虽然没有任何理由在ajaxComplete
回调中拨打success:
:
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 );
});
这几乎是一回事。您已将变量与传递给回调函数的第一个参数相关联。
答案 1 :(得分:2)
它可以是任何有效的变量名称。只要您在该函数的范围内使用相同的data
或msg
,success
或success
都可以正常工作。
要解释一下,您将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!"
设置为匿名函数,几乎只是一个没有名称的函数。因此,当jQuery调度workOnBob
事件时,它会调用您在创建ajax请求时提供的函数。它还将一些参数传递给该函数(在这种情况下,来自ajax请求的结果数据)。您定义的是在新函数范围内调用传入信息的内容。
以下面的代码为例:
"Bob"
您可以看到sayHi
是一个函数,它应该传递一个匿名函数。它使用字符串getMarried
调用该函数。另请注意,匿名函数name
和groom
已将它们在自己的范围内分别命名的参数命名为{{1}}和{{1}}。他们都得到字符串“Bob”,但他们都选择称之为不同的东西。
匿名函数和闭包可能令人困惑,但是一旦掌握了它们,它们就会非常有趣。
答案 2 :(得分:1)
它只是包含从ajax调用返回的响应数据的变量的名称。将其命名为对上下文最有意义的任何内容,以使代码更具可读性,例如: html
,resp
,logged
。