【问题标题】:How to load external XML to get data into Phonegap app如何加载外部 XML 以将数据导入 Phonegap 应用程序
【发布时间】:2014-05-23 22:50:35
【问题描述】:

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

我有

这是我在索引文件中获取 xml 的代码:

if (window.XMLHttpRequest) {/* code for IE7+, Firefox, Chrome, Opera, Safari */ xmlhttp=new XMLHttpRequest(); }
else {/* code for IE6, IE5 */ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
xmlhttp.open("GET","http://EXAMPLESITE.com/EXAMPLE.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;  

我目前正在使用 xcode 对此进行测试,但无法让它在模拟器或测试设备上显示任何内容。

我还尝试在 plist 中添加 ExternalHosts 键并列出我要访问的域。

有人可以请我解决这个问题吗?谢谢

【问题讨论】:

  • 在 Apple 设备上,我能够将其从一台服务器中提取,但不能从另一台服务器提取,因此这似乎是一个安全问题。我现在已经在 Android 上尝试过了,它不会从远程 XML 文件中提取任何数据。如果我有本地文件,它显示没有问题。我的 config.xml 有 。我使用的是Phonegap 2.1.0,所以我将它升级到了2.9.0。我的清单文件有 。我什至找不到其他可以尝试的东西,所以我不知道该怎么做。

标签: javascript xml cordova


【解决方案1】:

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

if (window.XMLHttpRequest) {/* code for IE7+, Firefox, Chrome, Opera, Safari */ xmlhttp=new XMLHttpRequest(); }
else {/* code for IE6, IE5 */ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
xmlhttp.open("GET","http://EXAMPLESITE.com/EXAMPLE.xml",false);
xmlhttp.onLoad = function() {
    // Data is loaded, now it can be used:
    xmlDoc = xmlhttp.responseXML;
    // Do something with xmlDoc...
}
xmlhttp.send();

您还应该查找其他内容,例如错误等。请参阅那里的完整文档 - https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

【讨论】:

  • 这是有道理的,但它似乎仍然没有提取任何数据。当我只是下载 XML 文件时,它工作正常,因为它是本地的,但我无法让它从外部站点中提取。我没有收到任何错误,但我不确定测试失败的最佳方法。
  • 我不熟悉如何调试 cordova 应用程序,但是您是否尝试使用 console.info 语句检查代码是否正常工作?如果代码在本地而不是远程运行,也可能是一些安全或沙盒问题。
  • 看来这是服务器上的问题。我尝试从不同的服务器获取 xml,它提取数据没有问题。所以我认为这是使用 xml 的服务器上的一个问题,它不允许从外部站点访问 xml
猜你喜欢
  • 2016-09-29
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多