尝试使用 javascript、jquery 和 html 搜索 wunderground 位置
Posted
技术标签:
【中文标题】尝试使用 javascript、jquery 和 html 搜索 wunderground 位置【英文标题】:Trying to search wunderground locations with javascript, jquery, and html 【发布时间】:2012-05-18 03:14:24 【问题描述】:下面的代码不起作用。试图搜索天气位置。当我搜索时,什么也没有发生。
<input type="text" id="query" /><button>search</button><br />
<div id="results">
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function()
var url='http://autocomplete.wunderground.com/aq?format=JSON&query=';
var query;
$('button').click(function()
query=$("#query").val();
$.getJSON(url+query,function(json)
$.each(json.results,function(i,location)
$("#results").append('<p>'+location.name+'</p>');
);
);
);
);
</script>
仅供参考,我对编码非常缺乏经验(从另一个网站复制脚本)
【问题讨论】:
autocomplete.wunderground.com 是否是提供您网页的同一站点的域? 你从哪里得到这个 sn-p? 帕斯,没有。巴兹梅加,webhole.net/2009/11/28/how-to-read-json-with-javascript 【参考方案1】:如果要进行跨域请求,则必须使用JSONP
,并且应为JSONP请求附加回调函数,如here in wunderground.com所述,试试这个。
$(document).ready(function()
var url = 'http://autocomplete.wunderground.com/aq?format=JSON&query=';
var query;
$('button').click(function()
query = $("#query").val();
$.getJSON(url + query + '&cb=callbackfunc', function(json)
$.each(json.results, function(i, location)
$("#results").append('<p>' + location.name + '</p>');
);
);
);
);
更新:
首先你应该了解JSONP是什么。
cb参数用于wunderground API as you can see here in documentation中的JSONP回调函数。
如果你还是不明白为什么需要使用jsonp回调函数,
打开这两个链接,你会发现它们有什么区别。
without cb paramater
with cb paramater
【讨论】:
对不起,编码不好,&cb=的值应该是多少? @ocanal,非常感谢上面的信息,[不带cd,带cb]的链接真的是一样的,请问有什么区别吗? @shireefkhatab 是的,只有一个区别,当你使用回调参数时,json 是用mycallbackfunc
包裹的。这意味着当 jsonp 请求完成时调用函数。如果您的页面中有一个 mycallbackfunc,它将使用 json 参数调用。 jquery 处理 jsonp 请求,因此您无需担心。
你能指点一下cb会是什么样子吗?
@shireefkhatab,这是一个简单的纯 javascript jsonp 请求,jsfiddle.net/j8h6jomb/7【参考方案2】:
出于安全原因,您不能使用 JavaScript 从远程站点提取数据(请参阅the same origin policy)。
解决方法包括 CORS(有限的浏览器支持,该服务不支持)、JSON-P(该服务显然不支持)以及在您自己的服务器上使用代理。
【讨论】:
以上是关于尝试使用 javascript、jquery 和 html 搜索 wunderground 位置的主要内容,如果未能解决你的问题,请参考以下文章
使用 Javascript/Jquery 停止 html 声音
javascript 学习小结 jQuery封装ajax尝试 by FungLeo
尝试使用 chrome 控制台 javascript/jquery 获取内部元素
在 JavaScript 或 jQuery 中增加和减少数量时如何计算价格?