廢話不多說,關(guān)鍵代碼如下所示:
jQuery.ajax({
"type":"post",
"url":"http://www.baidu.com",
"success":function(rel){
if(rel.isSuccess){
window.open(rel.url,"_blank");
}
}
});
這個(gè)url請(qǐng)求成功后window.open(rel.url,"_blank");會(huì)被瀏覽器攔截,無法打開新窗口,如果把window.open()放在ajax外面,問題就迎刃而解,代碼如下:
var result="";
jQuery.ajax({
"type":"post",
"url":"http://www.baidu.com",
"success":function(rel){
if(rel.isSuccess){
result=rel.url;
//window.open(rel.url,"_blank");
}
}
});
if(result.length>0){
window.open(result,"_blank");
}
下面看下在Ajax響應(yīng)之后打開新窗口
最近的開發(fā)中有一個(gè)功能,點(diǎn)擊一個(gè)鏈接之后,要判斷當(dāng)前的用戶是否登錄,沒有登錄的話,需要彈出一個(gè)登錄對(duì)話框,用戶登錄之后,再在新的窗口(標(biāo)簽)中打開鏈接指向的Url。
不多說,直接貼出代碼:
$(document).delegate("a", "click", function () {
var actionUrl = $(this).attr("href");
var ssoAction = function () { window.open(actionUrl, '_blank'); };
if (isLogin()) {
ssoAction();
} else {
popup.show({login:function () {
$.ajax({
type: "post",
dataType: "json",
url: "/Account/Login",
data: $("frmLogin").serialize(),
//發(fā)送方式改為同步,避免彈出頁(yè)面被瀏覽器攔截
async: false,
success: function (oData) {
ssoAction();
}
});
});
}
return false;
});
重點(diǎn):需要使用同步提交,使用異步提交,callback里面打開新窗口(標(biāo)簽),會(huì)被瀏覽器認(rèn)為是惡意行為。
您可能感興趣的文章:- Ajax請(qǐng)求響應(yīng)中用window.open打開新窗口被攔截的解決方法
- ajax怎么打開新窗口具體如何實(shí)現(xiàn)
- Ajax打開新窗口被瀏覽器攔截的兩種解決辦法