Zwei ajax-requests auf dasselbe Ereignis zur gleichen Zeit . was sollte das typische Verhalten? wie anders ist es, wenn Anfrage ist synchron
In den folgenden javascript-code, sende ich zwei Ajax-request zur gleichen Zeit.
Nach der Analyse mit Firebug kam ich zu ungewöhnlicher Schluss, dass :
", die immer (Ajax) - Antwort kommt, ist zuerst drucken Letzte".
Problem 2: wenn ich weisen Sie die Ajax-url-Ziel, um eine zufällige Zeichenfolge (z.B. "abcd") [nicht vorhanden] dann Gesamtanzahl der ajax-call wird erhöht auf 3?
$(document).ready(function(e) {
$("form[ajax=true]").submit(function(e) {
e.preventDefault();
var form_data = $(this).serialize();
var form_url = $(this).attr("action");
var form_method = $(this).attr("method").toUpperCase();
$("#loadingimg").show();
$.ajax({
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
alert ("a");
//$("#result").html(returnhtml);
//$("#loadingimg").hide();
}
});
$.ajax({
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
//$("#duplicate").html(returnhtml);
//$("#loadingimg").hide();
alert("b");
}
});
});
});
Entnehmen Sie bitte der folgenden Fiddle.
"which ever (ajax)response is coming first is printing last"
- Vielleicht, vielleicht auch nicht. Es könnte in der Tat der Fall in Ihrem besonderen Szenario, dass dies das Ergebnis die meiste Zeit. AJAX ist per definition asynchron. Es gibt keine Garantie, die man "fertig stellen", zuerst (oder überhaupt). "Problem 2" macht nicht viel Sinn, kannst du das etwas erläutern? In der Tat, was ist Ihre Frage?brauchen Sie geschehen, in einer bestimmten Reihenfolge?
kann ich nicht bestätigen. mit der Geige http://jsfiddle.net/d66DN/, Sie können sehen, der erste return alert-ersten. auch wenn Sie eine Anfrage an eine zufällige url erhalten Sie eine 301:premanently entfernt. Sie erhalten 3 wenn Sie nur eine url, ändern Sie 4.
können Sie bestätigen, dass dieselbe durch ausführen firebug-tool.
InformationsquelleAutor atom217 | 2014-04-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, ich völlig verstehen, aber ich werde versuchen, Ihnen einige Informationen. Wie David sagte: Es scheint, dass die erste Anforderung ist die Letzte, die reagiert, aber das wird variieren unter vielen Umständen ab. Es gibt verschiedene Möglichkeiten, wie Sie dies tun könnte, um das Ergebnis kontrollieren oder Reihenfolge der Anfragen.
1) Nach dem Erfolg der ersten Anfrage, die Sie initiieren könnte die zweite Anfrage. Ich empfehle nicht, dies aus Gründen der Geschwindigkeit als Ihre Anträge nicht parallel laufen.
2) Wenn Sie brauchen, um sowohl Anfragen, die Antworten in der gleichen Zeit, ist die bevorzugte Methode wäre wahrscheinlich jQuery deferred. Dies wird beide Anträge parallel laufen lassen, und sobald beide Reaktionen sind, können Sie gehen, wie Sie haben würde.
Etwas Wie dieses:
Check out:
https://api.jquery.com/jQuery.when/
http://api.jquery.com/deferred.then/
https://api.jquery.com/deferred.done/
Ich hoffe, das hilft!
InformationsquelleAutor wrxsti
Oder verwenden Sie
server_response
im code. Das Skript beginnt mit Bedingung:InformationsquelleAutor Franklin CI
InformationsquelleAutor Gaurav