1

你好呀!。

我正在尝试在网页上使用来自 wunderground 的公共 api(更多信息在 [http://wiki.wunderground.com/index.php/API__-_XML][1])(实际上是在手机的小部件中) ,但出于测试目的,但从技术上讲和写代码是一样的)。

主要问题是我无法让ajax请求工作,我尝试使用普通请求(没有任何库)并使用jquery请求;你可以猜到:没有人工作。

我对此感到非常沮丧。我知道有大量的信息 ajax,但不幸的是,我只会得到更多令人沮丧的理解,因为我没有在海量信息(如互联网)中找到一个具体的答案。

也许一个慈善灵魂 :) 可以帮助我,我复制粘贴代码:很简单,只能看到和测试,你只需要复制和粘贴。

嗯,就是这样,谢谢大家!问候。维克

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test Data</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
        <script type="text/javascript">
        function tryGet ()
        {
            try
            {
                var xhr = XMLHttpRequest ();
                xhr.open("GET","http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=SABE",true);
                xhr.onreadystatechange = function()
                {
                    if (xhr.readyState == 4) 
                    {
                        if (xhr.status == 200) 
                        {
                            alert(xhr);
                        }
                        else 
                        {
                            ret = "Error code " + xhr.status;
                            alert(ret);
                        }
                    }
                }
                xhr.send(null);
            }
            catch(e)
            {
                alert(e);
            }
        }

        function tryGet2 ()
        {
            //Let's fetch simple.xml using jQuery ajax request
            $.ajax(
            {
                type: "GET",
                url: "http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=SABE", 
                dataType: "xml", 
                success: function(data, textStatus, jqXHR)
                {
                    alert(textStatus);
                }
            });
        }
        </script>
    </head>
    <body>
        <input type="button" value="try get" onclick="tryGet()"/><br/>
        <input type="button" value="try get 2" onclick="tryGet2()"/>
        <div id="content">
            <!-- To put things when things works fine-->
        </div>
    </body>
</html>
4

2 回答 2

1

你能做的是

1 创建服务器端代理

2 通过ajax调用代理,代理会依次调用天气服务

3 从代理中获取 xml 响应

4 解析并显示

这是您在 php 中的操作方式

创建一个文件weather.php并将以下代码放入其中

<?php
header('Access-Control-Allow-Origin: *');
$url = "http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=SABE";
$str = file_get_contents($url);
echo $str;
?>

从客户端调用weather.php

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$.ajax({
    type:'GET',  
    url:'path/to/weather.php',  
    cache:false,
    dataType:'html',
    success:function(data){         
     xmlDoc = $.parseXML(data),
     $xml = $(xmlDoc),
     $credit = $xml.find('credit').text();
     alert($credit); // alerts Weather Underground NOAA Weather Station
    },
    error:function(jxhr,e){
        console.log(jxhr.status);
        console.log(e.responseText);
    }
});

});

</script>
于 2011-08-20T20:19:49.217 回答
1

在前端,您可以使用回调,这是我使用 WU 搜索抓取电台的方式:

var get_city_list =  function(query) {
    $.ajax({
        url: "http://autocomplete.wunderground.com/aq?cb=cb_func&query=" + query,
        type: "GET",
        dataType: "jsonp",
        callback: "cd_func"
    });
}

    window.cb_func = function(result) {
    $.each(result, function(indexInArray, value) {
        $.each(value, function(idx, result) {
            $("<li>")
            .data("name", result.name)
            .addClass("weather-station")
            .text(result.name)
            .appendTo("#search-results");
        });
    });
}
于 2015-06-05T21:49:20.643 回答