日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

低版本webview无法请求jquery ajax

發布時間:2023/12/10 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 低版本webview无法请求jquery ajax 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是烤鴨:
?? ?又來踩坑了。

1.?? ?場景復現


?? ?有反饋我們的H5頁面,無法正確顯示頁面。就類似下圖這樣,ajax沒法請求到數據。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?? ?之前測試的時候是在web端做的測試,用安卓7.0和8.0的手機都試了一下,是沒有問題的。
?? ?后來借到一臺小米3(4年前的機型?)搭載的是安卓5.0吧,確實出現這個問題了。(后臺收不到請求,估計是js報錯
?? ?由于不能看到哪里報錯,只能一點點刪代碼,看是哪個地方不兼容。

2.?? ?猜測問題


?? ?2.1?? ?使用sessionStorage,可能是低版本安卓不支持sessionStorage

?sessionStorage.removeItem["test_xxx"];

? ? 2.2?? ?使用h5的函數(location.toString())不支持,目的是獲取瀏覽器地址欄

var s = location.toString();

? ?2.3?? ?ajax方法有問題,代碼如下:

?//獲取該手機最新訂單function getLatestOrder(){$.ajax( { ? ?url : prefix+'/getLatestOrder',// 跳轉到 action ? ?data:{ ? ?'mobile' : mobile}, ? ?type:'post', ? ?cache:false, ? ?dataType:'json', ? ?//跨域dataType:'jsonp', ??jsonp : 'callback',success : function(data) {console.log(data);if (data.code == "100") {window.location.reload();} else {//錯誤提示console.log(data.msg);}},error : function() {alert("異常!");}});}


?? ?后來一點點排查,2.2導致請求無法發出,改掉location函數之后,發現后臺可以收到請求(返回值正常),但是頁面沒有收到返回值,是2.3的問題。

3?? ?解決方式


?? ?將jquery的ajax改為原生的ajax,比如上面的方法改為

?//獲取該手機最新訂單function getLatestOrder() {var sendData = {mobile:mobile};xhrAjax('post',prefix + "/getLatestOrder", sendData, function(data){var data1 =JSON.parse(data);if (data1.code == "7016") {window.location.reload();} else {//錯誤提示console.log(data1.msg);}}, function(error){console.log(error);showError("異常!");});}

? ?xhrAjax.js

function xhrAjax(type, url, data, success, failed){?? ?// 創建ajax對象var xhr = null;if(window.XMLHttpRequest){xhr = new XMLHttpRequest();} else {xhr = new ActiveXObject('Microsoft.XMLHTTP')}var type = type.toUpperCase();// 用于清除緩存var random = Math.random();if(typeof data == 'object'){var str = '';for(var key in data){str += key+'='+data[key]+'&';}data = str.replace(/&$/, '');}if(type == 'GET'){if(data){xhr.open('GET', url + '?' + data, true);} else {xhr.open('GET', url + '?t=' + random, true);}xhr.send();} else if(type == 'POST'){xhr.open('POST', url, true);// 如果需要像 html 表單那樣 POST 數據,請使用 setRequestHeader() 來添加 http 頭。xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xhr.send(data);}// 處理返回數據xhr.onreadystatechange = function(){if(xhr.readyState == 4){if(xhr.status == 200){success(xhr.responseText);} else {if(failed){failed(xhr.status);}}}} }

4.?? ?總結


因為這個app其他頁面也用過jq的ajax,很難想象是jquery的問題。
由于改的急,沒有嘗試更多的方案。
后來看了一個帖子,讓安卓按照上面的重新給我打個包。

https://blog.csdn.net/u013540324/article/details/64573785

還是不行,也是后臺可以收到請求(返回值正常),但是頁面沒有收到返回值。
雖然知道怎么處理了,但是還是無法解釋為什么,mark一下,給有相同問題的朋友提個醒。

總結

以上是生活随笔為你收集整理的低版本webview无法请求jquery ajax的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。