/ / Použite Ajax na zobrazenie priebehu skriptu PHP volaného ďalšou požiadavkou Ajax - php, ajax, get, progress, simultánne

Použite Ajax na zobrazenie pokroku PHP skriptu nazvaného inou Ajaxovou požiadavkou - php, ajax, get, progress, simultánne

Ja jQuery Ajax zavolám na PHP skript, ktorýbeží po primeranú dobu (od 1 do 3 minút). Neustále zaznamenáva percento dokončenia v databáze. Ako môžem nepretržite spúšťať ďalšiu požiadavku Ajaxu, aby som mohol užívateľovi oznámiť úplné percento z databázy MySQL?

UPRAVIŤ Chápem, ako použiť samostatný skript PHP na vyhľadávanie v databáze, takže moja otázka je viac, ako nastaviť volanie skriptov JavaScript a Ajax.

odpovede:

6 pre odpoveď č. 1

Po výzve AJAX na spustenie procesumôžete uskutočniť ďalšie volanie AJAX v slučke, ktorá požaduje, vracia sa a predstavuje úplné percento, až kým nedosiahne 100%. V zásade jeden hovor AJAX iniciuje proces a potom sériu hovorov, ktoré kontrolujú stav.

Aktualizácia: Tu je niekoľko jednoduchých JavaScriptov na dosiahnutie toho, čo chcete:

<script>
function startProcess() {
//start your long-running process
$.ajax(
{
type: "GET",
url: "/longRunningProcess",
async: true,
success:
function (data) {
//do something - your long process is finished
}
});
}
function getStatus() {
//check your progress
$.ajax(
{
type: "GET",
url: "/checkProgress",
async: true,
success:
function (data) {
//assume the data returned in the percentage complete
var percentage = parseInt(data);

//write your status somewhere, like a jQuery progress bar?

if (percentage < 100) {
//if not complete, check again
getStatus();
}
}
});
}


0 pre odpoveď č. 2

Pravdepodobne budete potrebovať inú adresu URL, aby ste to mohli zavolaťprieskumy verejnej mienky napredujú z databázy. Inými slovami, iný skript PHP, ktorý hlási pokrok. Volanie Ajax bude pravdepodobne využívať časový limit alebo akékoľvek fantastické veci, ktoré musí jQuery pravidelne naplánovať (až do dokončenia hlásení o hovoroch na serveri).

Nezabudnite zvládnuť výnimočné prípady, keď spracovanie na strane servera zomrie (a teda nikdy nedokončí!)