Home > Web Front-end > JS Tutorial > body text

How to handle when Ajax opens a new window and is intercepted

php中世界最好的语言
Release: 2018-04-02 17:00:30
Original
1242 people have browsed it

This time I will show you how to handle when Ajax opens a new window and is intercepted. What are the precautions when dealing with Ajax opening a new window and is intercepted? The following is a practical case, let's take a look.

Recently, when I was making a payment, I found that the payment window was intercepted by the browser when opening it. Baidu found out that it was because ajax was used to verify whether the payment could be made before opening the window, so it was not the user who actively triggered the opening of the ixin window and browsed The server thought this was not safe, so it intercepted 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("正在加载请稍后!");
  }
});
Copy after login

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 used the second method 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 , to make the browser think that popping up a new window is safe, all ajax before popping up a new window must be synchronized, 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("正在加载请稍后!");
  }
});
Copy after login

I believe you have mastered the method after reading the case in this article, more exciting Please pay attention to other related articles on php Chinese website!

Recommended reading:

Based on Ajax technology to achieve non-refresh user login (with code)

AJAX implementation without refresh Log in

The above is the detailed content of How to handle when Ajax opens a new window and is intercepted. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!