Javascript 如何加载外部XML将数据导入Phonegap应用程序

Javascript 如何加载外部XML将数据导入Phonegap应用程序,javascript,xml,cordova,Javascript,Xml,Cordova,我正在使用Phonegap构建一个应用程序,它从外部URL获取数据,然后使用javascript显示信息 我有 以下是我在索引文件中获取xml的代码: if(window.XMLHttpRequest){/*IE7+、Firefox、Chrome、Opera、Safari的代码*/xmlhttp=new-XMLHttpRequest();} else{/*IE6、IE5的代码*/xmlhttp=newActiveXObject(“Microsoft.xmlhttp”);} open(“GET”h

我正在使用Phonegap构建一个应用程序,它从外部URL获取数据,然后使用javascript显示信息

我有 以下是我在索引文件中获取xml的代码:

if(window.XMLHttpRequest){/*IE7+、Firefox、Chrome、Opera、Safari的代码*/xmlhttp=new-XMLHttpRequest();}
else{/*IE6、IE5的代码*/xmlhttp=newActiveXObject(“Microsoft.xmlhttp”);}
open(“GET”http://EXAMPLESITE.com/EXAMPLE.xml“,假);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
我目前正在使用xcode测试它,无法让它在模拟器或测试设备上显示任何内容

我还尝试在plist中添加ExternalHosts密钥,并列出了我试图访问的域


有人能帮我解决这个问题吗?谢谢

XMLHttpRequest是异步的,您需要等待XML加载后再尝试访问它。为此,可以使用
onLoad
处理程序:

if(window.XMLHttpRequest){/*IE7+、Firefox、Chrome、Opera、Safari的代码*/xmlhttp=new-XMLHttpRequest();}
else{/*IE6、IE5的代码*/xmlhttp=newActiveXObject(“Microsoft.xmlhttp”);}
open(“GET”http://EXAMPLESITE.com/EXAMPLE.xml“,假);
xmlhttp.onLoad=函数(){
//数据已加载,现在可以使用:
xmlDoc=xmlhttp.responseXML;
//使用xmlDoc做一些事情。。。
}
xmlhttp.send();

您还应该查找其他内容,如错误等。请参阅此处的完整文档-

,这是有意义的,但它似乎仍然没有提取任何数据。当我刚下载XML文件时,它工作正常,因为它是本地的,但我无法从外部站点获取它。我没有收到任何错误,但我不确定测试失败位置的最佳方法。我不熟悉如何调试cordova应用程序,但您是否尝试使用
console.info
语句检查代码是否正常工作?如果代码在本地工作,但不是远程工作,则可能是安全或沙箱问题。这似乎是服务器上的问题。我尝试从另一台服务器获取xml,它提取数据没有问题。因此,我认为这是xml服务器上的一个问题,因为它不允许从外部站点访问xml。在苹果设备上,我能够从一台服务器上获取xml,但不能从另一台服务器上获取,因此这确实是一个安全问题。我现在已经在Android上试过了,它不会从远程XML文件中提取任何数据。如果我有本地文件,它显示没有问题。我的config.xml已被删除。我用的是PhoneGap2.1.0,所以我把它升级到了2.9.0。我的清单文件已被删除。我找不到别的东西可以尝试,所以我不知道该怎么办。