0

我正在尝试使用带有 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:/// 开头

谢谢你。

4

1 回答 1

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
                                }
                            }));
}
于 2013-08-30T17:55:35.217 回答