我正在尝试使用带有Ajax的Jquery从xml文件中检索xml信息,如下所示:
function getWeatherXML() {
// still subjected to CORS issue ...
alert('Getting weather information...');
$.support.cors = true;
$.ajax({
url: "http://www.weather.gov.sg/wip/pp/rndops/web/rss/3Day_RSS.xml? callback=?",
type: "GET",
dataType: "xml", //type of data for response
crossDomain: "true" ,
jsonpCallback : "myResponse",
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
}
});
}
function myResponse(data) {
alert(data);
}
但是,我仍然遇到跨源资源共享问题,无论如何我可以解决这个问题?我在我的Android设备上测试,因此我的来源将被声明为null。原因是因为我的webView.loadurl以file:///
开头谢谢。
答案 0 :(得分:0)
根据WebView
和您的原生Android
应用程序绑定在一起的方式,您可以使用Java
获取XML
,然后将其移至你的Javascript
。对于这样的任务,我建议使用droidQuery,因为从现有代码移植它会很简单:
public void getWeatherXML() {
$.with(this).alert("Getting weather information...");
//You can either set the type to `XML`, then parse it with Java, or you can just set the type to String, and hand it off to your Javascript
$.ajax(new AjaxOptions().url("http://www.weather.gov.sg/wip/pp/rndops/web/rss/3Day_RSS.xml")
.context(this)
.type("GET")
.dataType("text")
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError error = (AjaxError) params[0];
droidQuery.alert(error.reason);
droidQuery.alert("Error " + error.status + ": " + error.reason);
}
})
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
String xml = (String) params[0];
//TODO hand xml String to your Javascript
}
}));
}