JQuery ajax json怎么 获取外网数据
JQuery ajax json怎样 获取外网数据
下面这种写法对吗?应该怎么写?望大神指点!!
------解决方案--------------------
跨域使用jsonp吧
如下
------解决方案--------------------
跨域了你那个页面,又没提供jsonp回调,只能做代理
------解决方案--------------------
代理要用服务器支持的,代理页面用服务器端的xhr对象捉去远程数据分析后输出,ajax请求这个代理页面,参考这个:使用新浪天气预报接口获取天气预报信息
------解决方案--------------------
还有一个比较不严谨的做法。
自己写个servlet,然后用URL类,解析你那个页面的所有元素。
把想要数据解析出来。
前台ajax调自己这个servlet。
------解决方案--------------------
这个原因是浏览器的安全限制了js的跨域ajax访问,你可以用服务器后台去访问那个数据url,服务器后台用httpclient这样的东西,然后服务器后台开一个本地的url接口让你的页面访问。
------解决方案--------------------
不是吧难道你不能访问http://query.yahooapis.com/v1/public/yql以及配置jquery的正确路径?
------解决方案--------------------
跨域要用jsonp
------解决方案--------------------
jsonp不是这样用的。
jsonp不是个标准的东东,不建议用。楼主可以换个思路,写个专门的服务去访问其他网站的服务,也就是把天气预报的服务在你的网站进行一次包装,然后在页面是用ajax调用自己的服务也可以达到效果。
------解决方案--------------------
$.getJSON("http://query.yahooapis.com/v1/public/yql", {
q: "select * from json where url='http://m.weather.com.cn/data/101010100.html'"
这是使用雅虎的服务做代理,取到值然后转成json,数据的来源还是这个http://m.weather.com.cn/data/101010100.html
------解决方案--------------------
可以自己写一个后台,通过HttpWebRequest类获取指定域名下页面元素,然后再进行过滤提取你想要的内容,拼接成json结构传到前台,你就可以直接进行操作了。
下面这种写法对吗?应该怎么写?望大神指点!!
$(function(){
$.ajax({
type:"post",
url:"http://m.weather.com.cn/data/101010100.html", //中央台天气预报
dataType:"json",
success:function(data){
var test = eval(data);
alert(1); //这个都没有反应啊T_T
alert(test.weatherinfo.city);
}
});
})
------解决方案--------------------
跨域使用jsonp吧
如下
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>注册</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type ="text/javascript" src="jquery.js"></script>
</head>
<body>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<div id="content">
</div>
<script>
$(function(){
$.getJSON("http://query.yahooapis.com/v1/public/yql", {
q: "select * from json where url='http://m.weather.com.cn/data/101010100.html'",
format: "json"
}, function(data) {
var $content = $("#content")
if (data.query.results) {
var result = JSON.stringify(data.query.results);
$content.text(result);
var obj = eval('('+result+')');
alert(obj.weatherinfo.city);
} else {
$content.text('no such code: ' + code);
}
});
});
</script>
</body>
<script>
</script>
</html>
------解决方案--------------------
跨域了你那个页面,又没提供jsonp回调,只能做代理
------解决方案--------------------
代理要用服务器支持的,代理页面用服务器端的xhr对象捉去远程数据分析后输出,ajax请求这个代理页面,参考这个:使用新浪天气预报接口获取天气预报信息
------解决方案--------------------
还有一个比较不严谨的做法。
自己写个servlet,然后用URL类,解析你那个页面的所有元素。
把想要数据解析出来。
前台ajax调自己这个servlet。
------解决方案--------------------
这个原因是浏览器的安全限制了js的跨域ajax访问,你可以用服务器后台去访问那个数据url,服务器后台用httpclient这样的东西,然后服务器后台开一个本地的url接口让你的页面访问。
------解决方案--------------------
不是吧难道你不能访问http://query.yahooapis.com/v1/public/yql以及配置jquery的正确路径?
------解决方案--------------------
跨域要用jsonp
------解决方案--------------------
jsonp不是这样用的。
jsonp不是个标准的东东,不建议用。楼主可以换个思路,写个专门的服务去访问其他网站的服务,也就是把天气预报的服务在你的网站进行一次包装,然后在页面是用ajax调用自己的服务也可以达到效果。
------解决方案--------------------
$.getJSON("http://query.yahooapis.com/v1/public/yql", {
q: "select * from json where url='http://m.weather.com.cn/data/101010100.html'"
这是使用雅虎的服务做代理,取到值然后转成json,数据的来源还是这个http://m.weather.com.cn/data/101010100.html
------解决方案--------------------
可以自己写一个后台,通过HttpWebRequest类获取指定域名下页面元素,然后再进行过滤提取你想要的内容,拼接成json结构传到前台,你就可以直接进行操作了。