国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

javascript - 在方法里 window.location.href 不會立即跳轉,有什么方法解決

瀏覽:89日期:2023-05-13 09:28:30

問題描述

疑問:為何不是執行 location.href = 'http://www.cgvv.com.cn/exit.html';, 而是執行了 window.location.href = ’http://www.baidu.com’; ?

有什么辦法執行完 getData(), 如果獲取數據失敗,則跳轉到 ../exit.html, 不再執行 gourl(); 方法呢?

補充:ajax里面的 async: false 是同步請求!!!,這個只是一個簡單的demo,實際上getData()方法后面可能有很多邏輯,但是如果getData()獲取數據失敗,就不讓程序再執行其他的方法,而且其他的方法不一定在同一個文件里面。

<!DOCTYPE html><html lang='en'><head> <meta charset='utf-8'></head><body> <p><h2>我是測試頁面,看我是否發生跳轉</h2></p> <script src='https://cdn.bootcss.com/jquery/1.9.0/jquery.min.js'></script> <script type='text/javascript'> $(function() {getData();gourl(); }); function getData() {var is_success = false;$.ajax({ type: 'GET', url: 'http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=bug&bk_length=600', data: '', dataType: 'json', async: false, success: function(data) {if (data.status == 200) { is_success = true;} else { is_success = false;} }});if (!is_success) { location.href = 'http://www.cgvv.com.cn/exit.html';} } function gourl() {console.log(’我被執行了’);window.location.href = ’http://www.baidu.com’; } </script></body></html>

問題解答

回答1:

那你可以在getData方法success后再回調gourl進行你要的邏輯處理另外 不清楚你的is_success是具體怎么判斷 因為有$ajax也有對應的error

回答2:

你的代碼相當于執行下面這兩句:

location.href = ’../exit.html’;location.href = ’http://www.baidu.com’;

這兩句連續執行的時候會跳轉后面這個地址

猜測是瀏覽器訪問第一個需要時間,還未成功,第二個跳轉又來了,所以就放棄第一次跳轉,執行第二次跳轉,類似在url里面快速輸入兩次地址一樣。

回答3:

gourl()函數不可以在前面調用,而應該放在Ajax的邏輯中間,在if邏輯后面添加 else{gourl();}即:

if (!is_success) {location.href = 'http://www.cgvv.com.cn/exit.html'; }else {gourl(); }回答4:

題主的代碼可以理解為這樣:

<script type='text/javascript'> $(function() {getData(); }); function getData() {var is_success = false;$.ajax({ type: 'GET', url: 'http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=bug&bk_length=600', data: '', dataType: 'json', async: false, success: function(data) {if (data.status == 200) { is_success = true;} else { is_success = false;} }, error: function() { ... }});if (!is_success) { location.href = 'http://www.cgvv.com.cn/exit.html';}console.log(’我被執行了’);window.location.href = ’http://www.baidu.com’; } </script>

當代碼中有連續的兩個location.href的時候,會執行后面的跳轉,這個題主可以自己試一試。

另外,由于ajax是異步的,題主需要將if(!is_success)寫到ajax中的error中去,或者寫到success中的else判斷中,否則無論ajax是否成功,都會跳轉。gourl()同樣應該寫到success中。

此外,直接這樣的ajax應該會發生跨域錯誤的吧,建議使用代理或者其他方式解決跨域問題。

回答5:

手機碼的,是這個意思不?

$(function() { var dtd = $.Deferred(); dtd .done(function(){ console.log(’我被執行了’); window.location.href = ’http://www.baidu.com’; }) .fail(function(){ console.log(’我被拋棄了’); window.location.href = 'http://www.cgvv.com.cn/exit.html'; }); $.get('http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=bug&bk_length=600', 'json') .done(function(data) { if (data.status == 200) { dfd.resolve(); } else { dtd.reject(); } });});

主要是用jQ的promise,全部寫成異步,ajax的成功回調全部放在Deferred的done里(有多個也可以寫成數組),然后ajax的done里直接給個狀態就行了。

回答6:

既然getData和gourl有執行的關系,要么把gourl放到回調判斷 這個是可以適合異步的。如果是題主的同步,那么還可以

$(function() {getData();gourl(); });

直接在這里控制Gourl要不要執行也可以把?

回答7:

你的代碼邏輯有問題吧,ajax是異步的呀。gourl();這個函數不應該在那個地方調用。可以在ajax請求的成功或者失敗回調里調。看你的要求應該是在success里面調用。

標簽: JavaScript
主站蜘蛛池模板: 视频一区在线播放 | 欧美一区=区三区 | 最新三级网站 | 欧美黄视频 | 88av在线视频| 色综合日韩 | 一级毛片播放 | 毛片啪啪视频 | 最新三级网址 | 黄色三级毛片 | 成在线人永久免费播放视频 | 国产自线一二三四2021 | 国产成人免费不卡在线观看 | 午夜精品一区二区三区在线观看 | 亚洲人成一区二区三区 | 久久久久久88色愉愉 | 精品日本久久久久久久久久 | 色老久久精品偷偷鲁一区 | 欧美一级毛片aaa片 欧美一级毛片不卡免费观看 | 99精品小视频 | 成人无遮挡毛片免费看 | 在线观看成年人免费视频 | 国产97视频 | 国产亚洲视频在线播放大全 | 72种姿势欧美久久久久大黄蕉 | 国产精品日韩欧美在线 | 91久久国产露脸精品免费 | 国产精品久久久久久影院 | 国产精品在线播放 | 正在播放国产精品 | 美国一级片在线观看 | 欧美一级毛片美99毛片 | 五月色婷婷综合开心网4438 | 亚洲国产天堂久久综合网站 | 欧美一级特黄aaaaaa在线看首页 | 日本高清一本二本三本如色坊 | 久久亚洲天堂 | 国产精品自在自线 | ccav在线永久免费看 | 日本护士一级毛片在线播放 | 精品欧美一区二区三区免费观看 |