在我的jQuery Ajax调用中,“success:function(msg)”是什么意思?

时间:2011-08-21 01:01:11

标签: ajax jquery

我在页面上组合了两个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(?);
        });
    }
});

3 个答案:

答案 0 :(得分:3)

msgdata只是形式参数的名称。您可以使用它们来引用在调用它时传递给该函数的响应数据。

您可以将其重命名为任何有效的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)

它可以是任何有效的变量名称。只要您在该函数的范围内使用相同的datamsgsuccesssuccess都可以正常工作。

要解释一下,您将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调用该函数。另请注意,匿名函数namegroom已将它们在自己的范围内分别命名的参数命名为{{1}}和{{1}}。他们都得到字符串“Bob”,但他们都选择称之为不同的东西。

匿名函数和闭包可能令人困惑,但是一旦掌握了它们,它们就会非常有趣。

答案 2 :(得分:1)

它只是包含从ajax调用返回的响应数据的变量的名称。将其命名为对上下文最有意义的任何内容,以使代码更具可读性,例如: htmlresplogged