“success:function(msg)”在我的jQueryAjax调用中意味着什么



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

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 );
});

这几乎起到了同样的作用。您已经将一个变量与传递给回调函数的第一个参数相关联。

它可以是任何有效的变量名。只要在该函数的范围内使用相同的datamsg,它们都可以工作。

为了解释,您将success设置为一个匿名函数,几乎只是一个没有名称的函数。因此,当jQuery调度success事件时,它会调用您在创建ajax请求时赋予它的函数。它还将一些参数传递到该函数中(在本例中,是ajax请求的结果数据(。您所定义的是在这个新函数的作用域中应该调用的传入信息。

以以下代码为例:

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!"

您可以看到workOnBob是一个函数,应该向它传递一个匿名函数。它使用字符串"Bob"调用该函数。此外,请注意,匿名函数sayHigetMarried在其自己的范围内(分别为namegroom(对它们接收的参数进行了不同的命名。他们都得到了字符串"Bob",但他们都选择称之为不同的东西。

匿名函数和闭包可能会让人困惑,但一旦你掌握了它们的窍门,它们就会很有趣。

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

最新更新