ajax請求成功后新開窗口window.open()被攔截解決方法
問題:
前面開發(fā)項目時碰到一個問題,ajax 異步請求成功后需要新開窗口打開 url,使用的是 window.open() 方法,但是很可惜被瀏覽器給攔截了,怎么解決這個問題呢?
分析:
瀏覽器之所以攔截新開窗口是因為該操作并不是用戶主動觸發(fā)的,所以它認(rèn)為這是不安全的就攔截了(不過如果是 _self 的話就不會有這個限制),即使 ajax 回調(diào)函數(shù)中模擬執(zhí)行 click 或者 submit 等用戶行為(trigger('click')),瀏覽器也會認(rèn)為不是由用戶主動觸發(fā)的,因此不能被安全執(zhí)行,所以被攔截。
解決方法:
1、異步改為同步,即:async:false
2、將新開窗口指向為一個對象,然后修改對象的 url,比如:
$('.task').bind('click',function(){ var w = window.open(); $.ajax({ type: 'POST', url: '/surveyTask', dataType: 'json', error: function(){ w.close(); }, success: function(res){ w.location = res.url; } }); });
最后需要說明的是:網(wǎng)上的動態(tài)添加 form 新開窗口的方法,并不適合 ajax 請求,至少博主測試了下仍然被瀏覽器所攔截。
相關(guān)文章
Ajax刪除數(shù)據(jù)與查看數(shù)據(jù)操作
這篇文章主要介紹了Ajax刪除數(shù)據(jù)與查看數(shù)據(jù)操作,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03詳解Ajax跨域(jsonp) 調(diào)用JAVA后臺
本篇文章主要介紹了詳解Ajax跨域(jsonp) 調(diào)用JAVA后臺 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05ajax 動態(tài)傳遞jsp等頁面使用id辨識傳遞對象
本文為大家介紹下使用ajax動態(tài)傳遞jsp等頁面,js的jax編寫,使用id辨識傳遞對象2014-01-01AJAX應(yīng)用實例之檢測用戶名是否唯一(實例代碼)
本文通過實例代碼給大家介紹了AJAX應(yīng)用實例之檢測用戶名是否唯一,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-09-09使用wordpress的$wpdb類讀mysql數(shù)據(jù)庫做ajax時出現(xiàn)的問題該如何解決
這篇文章主要介紹了使用wordpress的$wpdb類讀mysql數(shù)據(jù)庫做ajax時出現(xiàn)的問題該如何解決的相關(guān)資料,需要的朋友可以參考下2015-10-10React+ajax+java實現(xiàn)上傳圖片并預(yù)覽功能
這篇文章主要介紹了React+ajax+java實現(xiàn)上傳圖片并預(yù)覽功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05