JQuery AJAX OnSuccess событие - PullRequest
       7

JQuery AJAX OnSuccess событие

1 голос
/ 08 августа 2009

Я выполняю AJAX с JQuery, но каждый раз, когда событие «onSuccess» должно выполняться после отключения другого запроса AJAX.

Вот код:

    d.ajax({
        url: f.options.url.offline,
        dataType: "jsonp",
        jsonp: "callback",
        cache: false,
        data: {
            status: "offline",
            ticket: f.connection.options.ticket
        },
        success: function(g) {
            f._offlineSuccess()
        },
        error: function() {
            f._offlineError()
        }
    })

Все мои AJAX-запросы - это JSONP, и когда сработал вышеуказанный код, в это время уже установлено другое AJAX-соединение (длинный запрос на опрос, длящийся около 10 секунд). Таким образом, функция "f._offlineSuccess" всегда выполняется после отключения другого соединения AJAX.

Я не вижу никакой связи между двумя запросами AJAX, и я не знаю, почему функция "onSuccess" должна выполняться после остановки другого соединения AJAX.

Любая помощь приветствуется ~

================================

Последнее обновление:

Я только что узнал, что если у меня есть два соединения JSONP одновременно, функция onSuccess / onFailure будет заблокирована. Я не знаю, сталкивался ли кто-то с такой же проблемой раньше?

Ответы [ 2 ]

2 голосов
/ 08 августа 2009

Ajax-запросы асинхронны. поэтому новый запрос не будет завершен для предыдущего. Если вы хотите, чтобы такое поведение использовало параметр async в false, или используйте функцию complete () для вызова другого запроса. Он будет срабатывать только после завершения первого запроса.

UPDATE Для JsonP используйте jQuery.getJSON () и выполните второй запрос на обратный вызов, если вызов был успешным.

function (data, textStatus) {
    // data will be a jsonObj
    // textStatus will be one of the following values: 
    //   "timeout","error","notmodified","success","parsererror"
    this; // the options for this ajax request
}
0 голосов
/ 08 августа 2009

Если вы используете вкладку firebug - net, вы сможете увидеть полный URL двух запросов jsonp. Вы должны увидеть имена функций обратного вызова в конце URL-адреса. Они разные или одинаковые? Я могу только предположить, что они одинаковы.

...