Heim > Backend-Entwicklung > PHP-Tutorial > Zwei Lösungen dafür, dass Ajax ein neues Fenster öffnet und vom Browser abgefangen wird

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

小云云
Freigeben: 2023-03-19 11:48:02
Original
1604 Leute haben es durchsucht

Dieser Artikel dient hauptsächlich dazu, mit Ihnen zu teilen. Als ich kürzlich eine Zahlung durchführte, stellte ich fest, dass der Browser beim Öffnen das Zahlungsfenster blockierte, weil Ajax zur Überprüfung der Zahlung verwendet wurde konnte vor dem Öffnen des Fensters vorgenommen werden, sodass der Benutzer das Öffnen des ixin-Fensters nicht aktiv auslöste. Der Browser hielt dies für unsicher und blockierte es.

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 Nachteile. Das heißt, 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 ein neues Fenster geöffnet wird, es sei denn, es wird nach einem Fehler geschlossen, aber dieser Benutzer Die Erfahrung wird sehr schlecht sein, also habe ich den zweiten Weg verwendet, um dies zu erreichen.

Lösung 2

Da Ajax standardmäßig asynchron ist, was eine hohe Leistung und ein gutes Benutzererlebnis bietet, aber auch zu Sicherheitsproblemen führt, müssen Sie den Browser dazu bringen, zu denken, dass ein neues Popup angezeigt wird Fenster ist sicher. Alle Ajax-Dateien müssen 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

Ajax-Rückruf zum Öffnen eines neuen Formulars Verhindern Sie das Abfangen des Browsers. Effektive Methode

iframe-Cross-Site-Blockierung durch Browser

JS-Code, um festzustellen, ob Webwerbung durch Browser_Javascript-Fähigkeiten blockiert und gefiltert wird

Das obige ist der detaillierte Inhalt vonZwei Lösungen dafür, 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!

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