• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

javascript - 网站工作,但不是在 iphone 上。 XMLHttpRequest() 错误

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:35:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我已经创建了这个网站

http://www.tylertracy.com/testing/Xml/App%20veiwer%205-28.php

它在大多数浏览器和 iPhone 模拟器上都能正常工作,但在真正的 iPhone 上却不行。我已将其范围缩小到 XMLHttpRequest()。似乎当我获取 xml 时,我无法读取它返回未定义的 [object Element] 的子级。这很莫名其妙我不明白。

这是我获取 XML 的代码

function convertXml (path) {
    if (window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
    }else{
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
    }
    xmlhttp.open("GET",path,false);
    xmlhttp.send();
    xml=xmlhttp.responseXML.getElementsByTagName("app");
    var foo = [];
    for (var i = 0; i <= xml.length-1; i++) {
        foo[i] = {};
        for (var j = 0; j <=xml[i].children.length-1; j++) { // get all children of the app and make it a part in the object
            foo[i][xml[i].children[j].tagName] = xml[i].children[j].innerHTML.trim();//super complicated
        } 
     }
    return foo;
}

经过多次试验,我发现在 iPhone 上请求返回 [object Document] 而计算机返回 [object XMLDocument]。我不知道这意味着什么,但我觉得这是我的问题所在。有没有办法在这些之间进行转换?

从那以后,我将代码更新为 jQuery,看看问题是否仍然存在,确实如此。

这是新的 jQuery

function getXML (path) {
//gets text version of the xml doc
var response = $.ajax({ type: "GET",   
                    url: "testingXml.xml",   
                    async: false,
                  }).responseText;
//converts text into xmlDoc
parser=new DOMParser();
xmlDoc=parser.parseFromString(response,"text/xml");
return xmlDoc;
}

function xmlToObject (x) {
var xml = x.getElementsByTagName("app"); //get all the xml from the root
var foo = [];
for (var i = 0; i <= xml.length-1; i++) {
    foo[i] = {}; // make the object
    for (var j = 0; j <=xml[i].children.length-1; j++) { //get all of the children of the main tag
        foo[i][xml[i].children[j].tagName] = xml[i].children[j].innerHTML.trim();  //super complicated
    }
}
return foo;
}

然后要获取数组,您将编写以下代码 xmlToObject(getXML("testingXml.xml"))

问题仍然存在,在计算机上很好,但在 iPhone(Google、Safari、Firefox、Oprah)上似乎 xml 没有显示。



Best Answer-推荐答案


我来了

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/

打开页面时在 Google Chrome 控制台中。这可能是它无法在 iOS 上加载的原因:Apple 决定忽略移动设备上的此类请求,而不是仅仅记录警告,以防止浏览器卡住。

试试

xmlhttp.open("GET",path,true);

和一个 xhr.onload 处理程序,如 MDN's "Synchronous and asynchronous requests" 中所述.

关于javascript - 网站工作,但不是在 iphone 上。 XMLHttpRequest() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30551373/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap