Ho riscontrato un problema con due richieste AJAX simultanee in esecuzione. Ho uno script PHP che sta esportando i dati su XSLX. Questa operazione richiede molto tempo, quindi sto cercando di mostrare i progressi all'utente. Sto usando AJAX e l'approccio al database. In realtà, sono abbastanza sicuro che funzionasse, ma non riesco a capire perché, non funziona più con nessun browser. Qualcosa è cambiato nei nuovi browser?Due richieste simultanee AJAX non verranno eseguite in parallelo
$(document).ready(function() {
$("#progressbar").progressbar();
$.ajax({
type: "POST",
url: "{$BASE_URL}/export/project/ajaxExport",
data: "type={$type}&progressUid={$progressUid}" // unique ID I'm using to track progress from database
}).done(function(data) {
$("#progressbar-box").hide();
clearInterval(progressInterval);
});
progressInterval = setInterval(function() {
$.ajax({
type: "POST",
url: "{$BASE_URL}/ajax/progressShow",
data: "statusId={$progressUid}" // the same uinque ID
}).done(function(data) {
data = jQuery.parseJSON(data);
$("#progressbar").progressbar({ value: parseInt(data.progress) });
if (data.title) { $("#progressbar-title").text(data.title); }
});
}, 500);
});
- il progresso sia correttamente aggiornamento nel database di
- il timer JS sta cercando di ottenere il progresso, posso vederlo in consolle, ma tutte queste richiesta caricamento tutta la durata del primo script, non appena la sceneggiatura termina, queste chiamate di avanzamento ajax vengono caricate
Quindi, perché la seconda chiamata AJAX attende che il primo termini?
Alcune configurazioni di server Web PHP consentono di eseguire contemporaneamente una connessione per sessione. Quindi, se stai usando sessioni, prova un esperimento in una pagina in cui tu (a) inizi una sessione, e poi (b) dormi per 60 secondi. Quindi prova a caricare un numero di istanze di questa pagina nello stesso browser: potrebbero caricarsi una dopo l'altra. – halfer
Hai aggiornato la versione jQuery di recente? –
Inoltre, in generale, più di una operazione AJAX non è la procedura migliore, poiché spreca tempo in chiamate HTTP in eccesso. Puoi unirli in uno e restituire diversi risultati in una stringa JSON? – halfer