你好!。
我正在尝试在网页上使用来自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>
答案 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");
});
});
}