Heim > Web-Frontend > js-Tutorial > Vorgehensweise, wenn Ajax ein neues Fenster öffnet und abgefangen wird

Vorgehensweise, wenn Ajax ein neues Fenster öffnet und abgefangen wird

php中世界最好的语言
Freigeben: 2018-04-02 17:00:30
Original
1311 Leute haben es durchsucht

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("正在加载请稍后!");
  }
});
Nach dem Login kopieren

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("正在加载请稍后!");
  }
});
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage