ajax 請求開啟新視窗被攔截
阿新 • • 發佈:2018-10-31
ajax 請求開啟新視窗被攔截
- 解決方法一: 先開始開啟一個空的新視窗,然後改變新視窗的 url
function demo() {
//未請求前開啟新視窗
var newPage = window.open();
$.ajax({
url: "",
type: "post",
data: {},
dataType: "jsonp",
success: function(result) {
//改變新視窗連結
newPage.location = "http://www.baidu.com";
}
});
}
這種實現方式有個弊端,就是不管 ajax 有沒有成功,都會執行 var wd = window.open();這行程式碼,所以成功和失敗都會開啟一個新視窗,除非在失敗後進行關閉,但這樣使用者體驗會非常不好,所以我用的第二種方式去實現的。
- 解決方法二:
ajax 是預設是非同步的,這樣效能高,使用者體驗好,但這也導致了安全問題,要讓瀏覽器認為彈出新視窗是安全的,必須讓彈新視窗之前所有的 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("正在載入請稍後!");
}
});