Bei der herkömmlichen AJAX-Abfragemethode fragt der Client den Server in benutzerdefinierten Intervallen nach den neuesten Daten. Diese Methode zum Abrufen von Daten erfordert ein kurzes Zeitintervall, um die Genauigkeit der Daten sicherzustellen. Wenn das Zeitintervall jedoch zu kurz ist, sendet der Kundendienst in kurzer Zeit mehrere Anfragen an den Server.
HTTP ist ein zustandsloses, einseitiges Protokoll. Benutzer können Anfragen nur über den Client an den Server senden und der Server verarbeitet und sendet eine Antwort zurück. Zur Implementierung von Instant-Messaging-Anwendungen wie Chatrooms, WEBQQ, Online-Kundenservice und Postfächern muss die „Server-Push-Technologie (Comet)“ eingesetzt werden.
Bei der traditionellen AJAX-Abfragemethode fragt der Client den Server in benutzerdefinierten Intervallen nach den neuesten Daten. Diese Methode zum Abrufen von Daten erfordert ein kurzes Zeitintervall, um die Genauigkeit der Daten sicherzustellen. Wenn das Zeitintervall jedoch zu kurz ist, sendet der Kundendienst in kurzer Zeit mehrere Anfragen an den Server.
Umgekehrtes AJAX, das als Long Polling oder COMET bezeichnet wird. Der Server und der Client müssen eine langfristige Anforderung aufrechterhalten, damit der Server Nachrichten an den Client zurücksenden kann, wenn Daten vorhanden sind.
Die Zeit erreicht 80 Sekunden. Wenn während dieser 80 Sekunden kein „Erfolg“ vom Server zurückgegeben wird, bleibt der Verbindungsstatus bestehen, bis Daten zurückgegeben werden oder der Wert von „Erfolg“ 0 ist, bevor die Verbindung geschlossen wird. Fahren Sie nach dem Schließen der Verbindung mit der nächsten Anfrage fort.
<p id="msg"></p> <input id="btn" type="button" value="测试" />
PHP
Dies ist eine Endlosschleife. Die Endbedingung der Schleife besteht darin, das Rückgabeergebnis zu erhalten und Json-Daten zurückzugeben. Und akzeptiert den Parameter $_POST['time'], um das Schleifen-Timeout zu begrenzen und eine übermäßige Verschwendung von Ressourcen zu vermeiden. (Der Browser sendet beim Schließen keine Nachricht an den Server und die Verwendung kann in einer Schleife fortgesetzt werden.)$(function(){ $("#btn").bind("click",{btn:$("#btn")},function(evdata){ $.ajax({ type:"POST", dataType:"json", url:"data.php", timeout:80000, //ajax请求超时时间80秒 data:{time:"80"}, //40秒后无论结果服务器都返回数据 success:function(data,textStatus){ //从服务器得到数据,显示数据并继续查询 if(data.success=="1"){ $("#msg").append("<br>[有数据]"+data.text); evdata.data.btn.click(); } //未从服务器得到数据,继续查询 if(data.success=="0"){ $("#msg").append("<br>[无数据]"); evdata.data.btn.click(); } }, //Ajax请求超时,继续查询 error:function(XMLHttpRequest,textStatus,errorThrown){ if(textStatus=="timeout"){ $("#msg").append("<br>[超时]"); evdata.data.btn.click(); } } }); }); });
Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.
Verwandte Artikel:
Jquery-spezifische Beispiele zeigen, wann AJAX verwendet werden sollte und wo AJAX verwendet werden sollte
Informationen zu domänenübergreifenden Ajax-Problemen Zwei Lösungen
js Ajax-Fortschrittsbarcode beim Laden
Das obige ist der detaillierte Inhalt vonKombination von JQuery und PHP zur Implementierung von AJAX Long Polling. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!