Что означает `success: function (msg)` в моем вызове jQuery Ajax? - PullRequest
5 голосов
/ 21 августа 2011

У меня есть два вызова jQuery Ajax, которые я объединяю на странице. Я застрял на success: function() в каждом, так как один success: function(msg), а другой success: function(data). Я не уверен, что оба они означают, и что они должны быть в объединенном коде. Я сделаю два звонка ниже, отдельно и вместе, так как они у меня есть.

Ajax Request # 1: На этой странице функций есть $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 Request # 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 ]

3 голосов
/ 21 августа 2011

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

});

Это делает почти то же самое. Вы связали переменную с первым аргументом, переданным в вашу функцию обратного вызова.

2 голосов
/ 21 августа 2011

Это может быть любое допустимое имя переменной.data или msg будут работать, если вы используете один и тот же в области действия этой функции.

Чтобы объяснить, вы устанавливаете 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".Также обратите внимание, что анонимные функции, sayHi и getMarried, по-разному именуют аргументы, которые они получают, в своей области видимости (name и groom соответственно).Они оба получают строку «Bob», но оба предпочитают называть это как-то по-другому.

Анонимные функции и замыкания могут сбивать с толку, но как только вы их освоите, они станут очень забавными.

1 голос
/ 21 августа 2011

Это просто имя переменной, содержащей данные ответа, возвращаемые при вызове ajax.Назовите все, что имеет смысл в контексте, чтобы сделать ваш код более читабельным, например, html, resp, logged.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...