uni-app 苹果真机调试调用ajax访问出错了
uni-app 苹果真机调试调用ajax访问出错了
产品分类:
HbuilderX
PC开发环境操作系统:
Windows
PC开发环境操作系统版本号:
win10专业版
HBuilderX版本号:
3.0.7
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10专业版 | HbuilderX |
App下载地址或H5网址:
http://zensho.webehr.cn/ios.rar
示例代码:
//获取页面翻译
function GetPageFaceByKey(root, pagename, kyinfo) {
var strRt = "";
var lg = "zh_cn";
var i = 0;
$.ajax({
url: root + "XML/PageFace_" + lg + ".xml",
dataType: 'xml',
type: 'GET',
async: false, //不要异步,否则取不到值
timeout: 5000,
error: function (xml) {
console.log(root + "XML/PageFace_" + lg + ".xml" + JSON.stringify(xml));
strRt = "fuction error";
},
success: function (xml) {
$(xml).find("page").each(function (i) {
if ($(this).attr("name") == pagename) {
strRt = $(this).children(kyinfo).text();
}
});
}
});
return strRt;
}
操作步骤:
这个方法在苹果真机调试时出错:NetworkError A network error occurred
$.ajax({
url: "XML/PageFace_zh_cn.xml",
dataType: 'xml',
type: 'GET',
async: false, //不要异步,否则取不到值
timeout: 5000,
预期结果:
苹果调试真机是可以正常访问xml文件
实际结果:
苹果真机调试出错了
bug描述:
之前用hbuilder调试苹果真机都是正常。最近不知道是否是换了hbuilderx的缘故不(把hbuilder的代码复制一份用hbuilderx打开后使用),发现调试苹果真机时读取程序报的xml时出错(以前都正常的)–出错信息及部分关键代码见附件,附件app到登录页就会报“fuction error”页就是代码的function GetPageFaceByKey(root, pagename, kyinfo) {里的$.ajax(请求出错了(错误信息及调试时的值见图片红色标准部分),通过在线方式发布的app见下面链接。我把app的文件改为rar。然后打开看到里面是打包进去那个PageFace_zh_cn.xml文件了 还请帮看下哪里出了问题。另外的配置文件见附件.程序包目录结构见附件(之前打包好的app可以正常使用)。苹果市场发布下面在线打包的app时的拒绝信息(定位描述的3个描述都在配置文件里加好的)
更多关于uni-app 苹果真机调试调用ajax访问出错了的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app 苹果真机调试调用ajax访问出错了的实战教程也可以访问 https://www.itying.com/category-93-b0.html
从描述和截图来看,问题主要出在iOS真机调试时XML文件访问失败。以下是关键分析点:
-
iOS安全策略问题:iOS对本地文件访问有严格限制,建议使用uni-app提供的原生API替代jQuery.ajax。可以改用uni.request或uni.downloadFile。
-
文件路径问题:iOS真机环境下路径处理与浏览器不同,建议使用绝对路径或uni-app的相对路径写法:
url: '/static/XML/PageFace_zh_cn.xml'
-
同步请求问题:iOS对同步请求支持较差,建议改为异步请求并配合Promise/async-await重构代码。
-
XML解析问题:uni-app环境下建议使用DOMParser替代jQuery的XML解析:
let parser = new DOMParser();
let xmlDoc = parser.parseFromString(res.data,"text/xml");