Получить параметры запроса jQuery AJAX по завершении - PullRequest
2 голосов
/ 14 января 2011

Как узнать, какие параметры были переданы (асинхронному) запросу jQuery AJAX после его завершения?

В основном я запускаю группу запросов AJAX с другим идентификатором, переданным в качестве параметра, и отображаюрезультаты для пользователя, когда каждый из них заканчивается.Теперь, если запрос выполнен успешно, я могу передать идентификатор обратно в результате запроса.Но если запрос не удался, я не знаю, какой запрос не удался, то есть для какого идентификатора был этот запрос.

Пример (javascript / jQuery):

for(var i=0; i < 10; i++ ) {

    $.ajax({
        type: "GET",
        url: "get-results.php", 
        data: { 'id': i },
        success: function(data, textStatus, xmlReq) {

            data = $.parseJSON(data);
            $("#result" + data.id).html(data.result);

        },
        error: function(xmlReq, textStatus, errorThrown) {

            var id= ???;
            $("#result" + id).html('error bla bla');

        }
   });
}

Ответы [ 4 ]

3 голосов
/ 14 января 2011

$.ajaxError предоставляет данные, отправленные с помощью вызова AJAX.

.ajaxError(handler(event, XMLHttpRequest, ajaxOptions, thrownError))

Объект ajaxOptions содержит все параметры, которые можно установить с помощью $.ajax

Так, вместо использования опции error: в $.ajax, используйте $.ajaxError.

$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError){
  if(ajaxOptions.url.indexOf('get-results.php') != -1){
    var data = ajaxOptions.data; // this is a string: 'id=1&param2=4'
                                 // to get the ID, you need to parse this
  }
});
2 голосов
/ 14 января 2011

Вам необходимо зафиксировать текущее значение i для функции error. И вы захватываете с закрытием. Итак:

error: function(id) {
    return function(xmlReq, textStatus, errorThrown) {

        $("#result" + id).html('error bla bla');

    };
}(i)

То есть error является результатом немедленного вызова анонимной функции с передачей текущего значения i.

2 голосов
/ 14 января 2011

Используйте тот факт, что Javascript поддерживает замыкания, и просто напишите имя переменной (но будьте осторожны, чтобы скопировать его в область действия блока for, чтобы оно не изменилось):

for(var i=0; i < 10; i++ ) {
    var INDEX = i;
    $.ajax({
        type: "GET",
        url: "get-results.php", 
        data: { 'id': i },
        success: function(data, textStatus, xmlReq) {

            data = $.parseJSON(data);
            $("#result" + data.id).html(data.result);

        },
        error: function(xmlReq, textStatus, errorThrown) {

            var id = INDEX;
            $("#result" + id).html('error bla bla');

        }
   });
}

Я считаю, что это то, что вы хотите.

1 голос
/ 14 января 2011

Вам нужно будет передать их обратно с вашим ответом.

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