Heim  >  Artikel  >  Web-Frontend  >  Zwei Lösungen für das Problem, dass Ajax ein neues Fenster öffnet und vom Browser abgefangen wird

Zwei Lösungen für das Problem, dass Ajax ein neues Fenster öffnet und vom Browser abgefangen wird

亚连
亚连Original
2018-05-23 10:09:072189Durchsuche

Als ich kürzlich eine Zahlung durchführte, stellte ich fest, dass das Zahlungsfenster beim Öffnen vom Browser blockiert wurde. Lassen Sie mich Ihnen zwei Lösungen für das Problem vorstellen, dass Ajax ein neues Fenster öffnet und vom Browser abgefangen wird.

Als ich kürzlich eine Zahlung durchführte, stellte ich fest, dass das Zahlungsfenster geöffnet war Beim Öffnen des Fensters wurde es vom Browser abgefangen. Da Ajax verwendet wird, um zu überprüfen, ob die Zahlung erfolgen kann, hat der Benutzer das Öffnen des Ixin-Fensters nicht aktiv ausgelöst dachte, das sei unsicher, also hat es es blockiert.

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, das heißt, unabhängig davon, ob Ajax erfolgreich ist oder nicht, wird die Codezeile var wd = window.open(); ausgeführt, sodass Erfolg und Misserfolg ignoriert werden. Öffnen Sie ein neues Fenster, es sei denn, es wird nach einem Fehler geschlossen. Diese Benutzererfahrung wird jedoch sehr schlecht sein, daher habe ich die zweite Methode verwendet, um sie zu implementieren.

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 glaubt, dass das Öffnen eines neuen Fensters sicher ist, müssen alle Ajax-Vorgänge 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("正在加载请稍后!");
  }
});

The Oben habe ich es für alle zusammengestellt und hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Ajax-Verifizierungscode für doppelte Implementierung

Ajax implementiert PHPCMs-ähnliche Funktionen (Bild und Text) Tutorial )

Ajax-Implementierung des Ladens von Seiten und Löschen von Inhalten

Das obige ist der detaillierte Inhalt vonZwei Lösungen für das Problem, dass Ajax ein neues Fenster öffnet und vom Browser abgefangen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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