Получить данные ответа в функцию jQuery ajaxComplete - PullRequest
9 голосов
/ 09 июля 2009

Что я хотел бы сделать, это отправить данные возврата из любого вызова ajax, а также сделать их доступными в функции ajaxComplete.

Так что, когда у меня есть $.post или $.get или $.getJSON и так по запросу, как это:

$.post(url, options, function(DATA)
{
    $('output').html(DATA);
});

я также хочу получить те же данные в

$.ajaxComplete(function(event, XMLHttpRequest, ajaxOptions)
{
    // do something with DATA that is returned by the ajax request
    alert(DATA);
});

Это означает, что я хочу, чтобы в глобальной функции ajaxComplete также были те же данные, которые я получаю, когда вызываю одну из функций ajax.

Спасибо за ответы.

Ответы [ 3 ]

7 голосов
/ 09 июля 2009

XMLHttpRequest.responseText

Обратите внимание, что если вы установите dataType в вызове json или используете функцию getJSON, вам придется скопировать внутреннюю функцию jquery и использовать eval ('(' + data + ')') для получения данных в json таким образом, чтобы он отражал параметр данных, переданный в обратный вызов успеха.

Или, как указывает activa, просто вызовите внутренний метод для сохранения работы.

4 голосов
/ 12 сентября 2012

Вы можете преобразовать в JSON внутри вашей функции ajaxComplete, используя

$.parseJSON(xhr.responseText);
1 голос
/ 09 июля 2009

Нет простого способа сделать это, но вы можете извлечь данные из объекта xhr. jQuery включает в себя внутреннюю функцию, которая делает это, но не имеет документов.

Вы можете вызвать этот метод так:

$.ajaxComplete(function(event, xhr, options)
{
    var data = $.httpData(xhr,options.dataType);

    alert(data);
});

Но будьте осторожны: это верно в jQuery 1.3.2 и, поскольку оно недокументировано, оно может измениться в будущих выпусках jQuery.

...