gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:13 24 4
gpt4 key购买 nike

我创建了这个网站

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 没有显示。

最佳答案

我得到了

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com