Ajax が新しいウィンドウを開いてブラウザに傍受される問題に対する 2 つの解決策

亚连
リリース: 2018-05-23 10:09:07
オリジナル
2168 人が閲覧しました

最近支払いをしているときに、支払いウィンドウを開いたときにブラウザがブロックしていることに気付きました。何が起こりましたか? Ajax が新しいウィンドウを開いてブラウザーにインターセプトされる問題に対する 2 つの解決策を紹介します。最近、支払いを行っているときに、支払いウィンドウを開くときにブラウザーによってインターセプトされたことがわかりました。 Baidu で検索したところ、ウィンドウを開く前に ajax を使用して支払いができるかどうかを確認しているため、ユーザーが ixin ウィンドウを開くよう積極的にトリガーしなかったことが原因であることがわかりました。それはそれをブロックした。

解決策 1まず空の新しいウィンドウを開き、次に新しいウィンドウの URL を変更します。具体的なコードは

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("正在加载请稍后!");
  }
});
ログイン後にコピー

この実装方法には欠点があります。 ajax が存在するかどうか 成功すると、コード行 var wd = window.open(); が実行されるため、失敗後に閉じない限り、成功しても失敗しても新しいウィンドウが開きますが、このユーザー エクスペリエンスは非常に悪いので、2 番目の方法を使用してそれを達成します。

解決策 2ajax はデフォルトで非同期なので、パフォーマンスが高く、ユーザー エクスペリエンスが優れていますが、セキュリティの問題にもつながります。これにより、ブラウザーに新しいウィンドウのポップアップが安全であると認識させることができます。新しいウィンドウが同期される前に、すべての ajax を許可する必要があります。具体的なコードは

$.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("正在加载请稍后!");
  }
});
ログイン後にコピー

です。これは、将来皆さんのお役に立てば幸いです。

関連記事:

重複実装用のAjax検証コード


Ajaxはphpcmsのような関数を実装する(グラフィックチュートリアル)


Ajaxはページの読み込みとコンテンツの削除を実装する


以上がAjax が新しいウィンドウを開いてブラウザに傍受される問題に対する 2 つの解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!