1. 程式人生 > >ajax回撥開啟新窗體防止瀏覽器攔截

ajax回撥開啟新窗體防止瀏覽器攔截

function click_fun(){
     window.open("www.baidu.com");//能開啟
    $.ajax({
        'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
        'type': 'post',
        'dataType': 'json',
        'data': data,
        success: function (data) {
            window.open("www.baidu.com");//被攔截
        },
        error:function(){

        }
    });
}

分析: 開啟新窗體只能在點選事件內觸發,點選事件內的回撥函式內開啟窗體會被攔截,瀏覽器會認為是廣告彈窗之類的程式碼 解決1:
function click_fun_new(){
    var tempwindow=window.open();//先開啟臨時窗體,由於是點選事件內觸發,不會被攔截
    $.ajax({
        'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
        'type': 'post',
        'dataType': 'json',
        'data': data,
        success: function (data) {
            tempwindow.location = "www.baidu.com";//當回撥的時候更改臨時窗體的路徑
        },
        error:function(){
            tempwindow.close();//回調發現無需開啟窗體時可以關閉之前的臨時窗體
        }
    });
}

解決2:

function click_fun_new(){
    var flag = false;
    $.ajax({
        'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
        'type': 'post',
        'dataType': 'json',
        'data': data,
        'async':false,//同步請求
        success: function (data) {
            $("#a").attr("href","www.baidu.com");//當回撥的時候更改頁面上或建立的某個a標籤的href
            flag = true;//更改標誌
        },
        error:function(){
            
        }
    });
    if(flag){
        $("#a").click();//href屬性更改後模擬點選
    }
}


相關推薦

ajax開啟窗體防止瀏覽器攔截

function click_fun(){ window.open("www.baidu.com");//能開啟 $.ajax({ 'url': '${pageCo

vue 路由跳轉開啟視窗(被瀏覽器攔截)

今天做了一個功能是點選按鈕路由跳轉開啟新的視窗頁面 第一種方法 <router-link target="_blank" :to="{path:'/FundManger/FundProductMoney', query:{managerId:fundcode}}&

window.open開啟視窗被瀏覽器攔截的處理方法

window.open是javascript函式,該函式的作用是開啟一個新視窗或這改變原來的視窗,如果你直接在js中呼叫window.open()函式去開啟一個新視窗,瀏覽器會攔截你,那麼如何避免呢。 注意,只有直接使用js呼叫 window.open(url); 開啟新視窗時,才會被攔截,如果是改變原理額

非同步請求後根據結果window.open方式開啟頁面,瀏覽器攔截彈窗問題

專案中出現一個問題,要求根據從後臺非同步請求後的結果開啟新的標籤頁,發現使用window.location.href=”地址”,該方法沒有問題,但是使用window.open開啟新頁面的時候會無效。

開啟頁面被瀏覽器攔截的問題

專案中,需求是先開啟彈窗完成資料校驗請求後,再開啟新的頁面,做表單資料的處理;程式碼完成後,彈出頁面的時候,總是被瀏覽器攔截,原因是瀏覽器的安全機制,防止非使用者操作彈出頁面,阻止廣告等非法頁面彈出,網上提供了一下幾種解決辦法:1. 使用window.open(url,"_b

【JavaScript】JS開啟視窗防止瀏覽器阻止的方法

本文例項講述了JS開啟新視窗防止被瀏覽器阻止的方法。分享給大家供大家參考。具體分析如下: 用傳統的window.open()方式開啟新視窗,會被瀏覽器阻止,那麼,我們如何才能讓JS開啟新視窗不被瀏覽器阻止呢?其實辦法還是有的,這裡我們就來分析一下如何解決這個問題 我最近也

Ajax退刷頁面問題的解決辦法

必須 自動 是我 ret 處理器 diff 不支持 一起學 資料 在腳本之家看到一篇文章,覺得以後可能會用上,但是竟然不能收藏,所以只能將其轉到博客園。 以下是原文地址: http://www.jb51.net/article/87856.htm 這篇文章主要介紹了Aj

ajax獲取伺服器靜態資源(一個.json檔案),請求成功,有檔案返回,但是ajax卻進了error(一個回車鍵惹出的禍)

問題描述:同事反應問題:向後臺請求json檔案,完了在前臺渲染一個表格,但是始終渲染不出來。  $.ajax({              &nbs

layui之ajax--函式

問題:一個簡單的AJAX提交表單操作,經常發生後臺資料儲存好了,前端layer彈出層沒有關閉,父頁面沒有重新整理,定位發現是回撥函式沒有執行!!!用Google Chrome瀏覽器這種現象較少,而Safari 和 firefox瀏覽器100%發生。 解決過程:困擾了很久,以

SpringMVC在處理Ajax請求後返回void導致前臺Ajax函式不執行

問題簡述 在一次SpringMVC專案中,前臺通過Ajax請求,準備修改資料庫中的資料。因為Ajax請求只是讓後臺更改資料,所以Controller方法根本不需要返回給前臺任何資料,所以我們將Controller的方法的返回值設定為void。但令我困擾的是,前端頁面本應該執行的回撥函式一直不

jQuery 中ajax函式獲得的資料格式問題

目的:在使用ajax做前、後臺互動時,有時需將從controller返回的資料在jsp頁面的表格展示出來;但是,如果資料格式不對,是無法展示的。 解決方法: 1.controller中返回一個Lis

a 標籤 開啟窗體 target="_blank" 失效 解決辦法

問題在 a 標籤中 已加入 target="_blank"  而網頁開啟 只在一個新視窗中開啟 始終都在改新視窗中重新整理內容 使用者如果失去該視窗的焦點 在原視窗中點選 a 標籤 使用者 看不到 新開啟的窗體 實際已在失去焦點的窗體中 重新整理了內容 會給使用者造成錯

ajax返回data:text/plain,導致ajaxsuccess不執行

問題描述: 正常情況下,ajax post返回的資料應該在response中(請求為非同步時),但是卻有第二個,chrome中請求描述如下: name path | Method | status | Type data:text/p

使用@ResponseBody返回String物件無法觸發ajax函式

莫名其妙!!!!!!! 用@ResponseBody返回一個String物件無法觸發前臺回撥函式,而且你確定你程式碼沒有問題 如果你前臺的ajax中寫了dataType:"json"屬性,把它去掉 就可以了。。。。。。。

ajax函式 返回404

先貼程式碼: JS程式碼如下。 PProductComposing.searchUp = function() { var _id = "#pProductComposing_type"; var url = $('#ctx').val()+"/pages/pProdu

ajax函式不能賦值

在做表單驗證碼功能的時候,思路是當驗證碼錯誤的時候,提示錯誤資訊,同時return false,不執行post請求。驗證碼正確的時候執行post請求。 var data="action="+$('#confirm-code').val(); var

jquery Ajax函式

在學習js期間一直不明白回撥函式的意思,當我理解了才發現是我自己想多了,回撥函式其實是個很好理解的東西,我真正不理解的是當jquery ajax傳送一個請求時為什麼會執行這個回撥函式,其實這個回撥函式是ajax請求中定義的一個方法而已,jquery ajax請求封裝的核心物

富文字編輯器CKEDITOR使用注意事項,Ajax

先簡述下,寫這篇文章的原因,用了ckeditor富文字編輯器,獲取值的時候,總是空值。 先說下,用法: 1、從網上下載ckeditor的相關檔案: 2、在介面上呼叫js檔案 <script src="<%=Request.Appli

jquery中ajax函式使用this

今天在寫ajax請求的時候success中程式碼老是不能正常執行,找了半天原因。程式碼如下 $.ajax({type: 'GET', url: "/flag/",

@ResponseBody 返回null物件 ajax不成功

@ResponseBody 的返回處理都可以用一個繼承ObjectMapper的類去處理 比如,過濾特殊字元,處理null(屬性,不是物件),針對返回的null物件(如果ajax對設定了datetyp:"json",不會回撥在success,而會在error中回撥),可以包裝