Heim > Artikel > Web-Frontend > Vorgehensweise, wenn Ajax ein neues Fenster öffnet und abgefangen wird
Dieses Mal zeige ich Ihnen, wie Sie damit umgehen, wenn Ajax ein neues Fenster öffnet und abgefangen wird. Was sind die Vorsichtsmaßnahmen, wenn Ajax ein neues Fenster öffnet und abgefangen wird? Schauen Sie mal rein.
Als ich kürzlich eine Zahlung tätigte, stellte ich fest, dass der Browser das Zahlungsfenster beim Öffnen blockierte. Baidu stellte fest, dass dies daran lag, dass Ajax verwendet wurde, um vor dem Öffnen zu überprüfen, ob die Zahlung durchgeführt werden konnte Es war also nicht der Benutzer, der das Öffnen des Ixin-Fensters aktiv ausgelöst und durchsucht hat. Der Server hielt dies für sicher und blockierte es daher.
Lösung 1
Öffnen Sie zuerst ein leeres neues Fenster und ändern Sie dann die URL des neuen Fensters. Der spezifische Code lautet
var wd = window.open(); $.ajax({ type: "POST", dataType: "json", url: URL, data: {orderNo:orderNo}, success: function(data) { if(data.status=='success'){ wd.location.href = 'http://www.baidu.com'; }else{ alert('订单不能支付!'); } },error: function(data) { alert("正在加载请稍后!"); } });
Diese Implementierungsmethode hat einen Nachteil: Unabhängig davon, ob Ajax erfolgreich ist oder nicht, wird die Codezeile var wd = window.open(); ausgeführt, sodass sowohl bei Erfolg als auch bei Misserfolg a geöffnet wird Neues Fenster, es sei denn, es wird nach einem Fehler ausgeführt. Geschlossen, aber diese Benutzererfahrung wird sehr schlecht sein, daher habe ich die zweite Methode verwendet, um dies zu erreichen.
Lösung 2
Da Ajax standardmäßig asynchron ist, bietet es eine hohe Leistung und eine gute Benutzererfahrung, führt aber auch zu Sicherheitsproblemen. Damit der Browser denkt, dass das Öffnen eines neuen Fensters sicher ist, müssen alle Ajax-Dateien synchronisiert werden, bevor ein neues Fenster geöffnet wird. Der spezifische Code lautet
$.ajax({ type: "POST", dataType: "json", url: URL, async: false,//同步请求 data: {orderNo:orderNo}, success: function(data) { if(data.status=='success'){ window.open("www.baidu.com"); }else{ alert('订单不能支付!'); } }, error: function(data) { alert("正在加载请稍后!"); } });
Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall gelesen haben In diesem Artikel und mehr. Wie aufregend, achten Sie bitte auf andere verwandte Artikel auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Benutzeranmeldung ohne Aktualisierung basierend auf Ajax-Technologie (mit Code)
AJAX ohne Aktualisierung der Anmeldung
Das obige ist der detaillierte Inhalt vonVorgehensweise, wenn Ajax ein neues Fenster öffnet und abgefangen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!