Home >Backend Development >PHP Tutorial >Two solutions to Ajax opening a new window and being intercepted by the browser

Two solutions to Ajax opening a new window and being intercepted by the browser

小云云
小云云Original
2018-01-08 13:46:541605browse

This article mainly shares with you. Recently, when I was making a payment, I found that the browser blocked the payment window when it was opened. Baidu found out that it was because ajax was used to verify whether the payment could be made before opening the window, so the user did not actively trigger the opening of ixin. window, the browser thought this was unsafe, so it blocked it.

Solution 1

First open an empty new window, and then change the url of the new window. The specific code is

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

This implementation method has a drawback, that is Regardless of whether ajax is successful or not, the line of code var wd = window.open(); will be executed, so both success and failure will open a new window, unless it is closed after failure, but this user experience will be very bad, so I use The second way to achieve it.

Solution 2

Because ajax is asynchronous by default, it has high performance and good user experience, but it also leads to security issues. You need to make the browser think that popping up a new window is safe. , all ajax must be synchronized before popping up a new window. The specific code is

$.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("正在加载请稍后!");
  }
});

Related recommendations:

effective method for ajax callback to open a new form to prevent browser interception

iframe cross-site blocked by the browser

JS code to determine whether web advertising is blocked and filtered by the browser_javascript skills

The above is the detailed content of Two solutions to Ajax opening a new window and being intercepted by the browser. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn