网站工作,但不是在iphone上.XMLHttpRequest()错误
Website working, but not on iphone. XMLHttpRequest() error
我已经创建了这个网站
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(谷歌,Safari,火狐,奥普拉)上,似乎xml只是不显示。
主线程上的同步XMLHttpRequest是不赞成的,因为它对最终用户的体验有不利影响。如需更多帮助,请查看http://xhr.spec.whatwg.org/
在Google Chrome控制台打开您的页面。这可能就是它无法在iOS上加载的原因:苹果决定忽略移动设备上的此类请求,而不是仅仅记录一个警告,以防止浏览器冻结。
与试
xmlhttp.open("GET",path,true);
和MDN的"同步和异步请求"中描述的xhr.onload
处理程序。
相关文章:
- XMLHttpRequest未返回值-状态202
- XMLHttpRequest在移动设备上的chrome上不起作用
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- 检查xmlhttprequest问题的消息
- 主线程上的同步XMLHttpRequest已弃用
- 如何定期发出xmlhttprequest
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 上传带有XMLHttprequest的文件-多部分/表单数据中缺少边界
- 对象#<XMLHttpRequest>没有方法'完成'
- 在XMLHttpRequest之后重新初始化jQuery
- 如何将GreaseMonkey中的XMLHttpRequest延迟到目标页面加载完成
- Javascript XMLHttpRequest——只有第一个POST请求有效
- XMLHttpRequest - difference between Chrome & Firefox
- IE上的新XMLHttpRequest()出现JS Ajax未指定错误
- 非常简单的XMLHttpRequest不起作用
- 如何使用XMLHttpRequest下载文件
- XMLHttpRequest在$.ajax工作的地方给出了CORS错误
- XMLHttpRequest.open()AJAX中的参数url
- XMLHTTPRequest脚本中没有internet连接和超时
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作