Ajax不使用wunderground API(获取信息和显示的气象服务)

时间:2011-08-20 19:32:21

标签: jquery ajax xmlhttprequest wunderground

你好!。

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

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

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

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

这就是全部,多亏了所有人! 素不相识。 VIC

<!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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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");
        });
    });
}