Jquery ajax evento onSuccess
-
12-09-2019 - |
Domanda
sto facendo AJAX con JQuery, ma ogni volta che l'evento "onSuccess" deve essere eseguita dopo l'altra richiesta AJAX scollegato.
Ecco il codice:
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()
}
})
Tutte le mie richieste AJAX sono JSONP, e quando viene attivato il codice di cui sopra, v'è un altro collegamento AJAX (lunga richiesta di polling, dura circa 10 senconds) già stabilito nel frattempo. Così la funzione "f._offlineSuccess" viene sempre eseguito dopo un altro collegamento AJAX scollegato.
Non riesco a vedere alcuna relazione tra le due richieste AJAX, e non so il motivo per cui la funzione "onSuccess" deve essere eseguita dopo un altro collegamento AJAX fermato.
Ogni aiuto è apprezzato ~
================================
aggiornamento:
ho scoperto se ho due connessioni JSONP allo stesso tempo, la funzione "onSuccess / onFailure" sarà bloccato. Non so se qualcuno ha riscontrato lo stesso problema prima?
Soluzione
richieste Ajax sono asincrone. quindi una nuova richiesta non sta andando per il precedente per terminare. Se si vuole che utilizzare il parametro comportamento async su false, o utilizzare la funzione completa () per chiamare un'altra richiesta. Questo sarà il fuoco solo quando la prima richiesta è finito.
UPDATE Per JSONP utilizzare jQuery.getJSON () e fare la seconda richiesta di richiamata sul se la chiamata era di successo.
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
}
Altri suggerimenti
Se si utilizza Firebug - scheda rete, si sarà in grado di visualizzare l'URL completo delle due richieste JSONP. Si dovrebbe essere in grado di vedere i nomi delle funzioni di richiamata alla fine dell'URL. Sono questi diverso o lo stesso? Posso solo supporre che siano gli stessi.