现在需要获取第三方网站:
http://www.sge.com.cn/sgeclient/sgeData/public/json/delaydata.json 这里的信息!
无权修改服务器端。
试过jsonp的ajax请求, 无法获取内容。 以下代码能直接运行。 求高手调试下。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <script language="javascript" type="text/javascript" src="http://libs.baidu.com/jquery/1.8.2/jquery.min.js"></script> </head> <body> <div id="BgDiv"></div> <script type="text/javascript"> function getData(){ $.ajax({ url: "http://www.sge.com.cn/sgeclient/sgeData/public/json/delaydata.json", dataType: "jsonp",crossDomain:true, data:{timestamp:new Date().getTime()}, success:function(data){ alert(ok); },error: function (result, status,s) { alert(s); } }); } getData(); setInterval("getData()",3000); </script> </body> </html>
有没有ajax跨域的解决办法?
难道我只能用webClient后台或者其它程序去采集这个json数据吗?
请求自己的后台,在后台发http请求吧
浏览器是不会让你进行ajax post跨域的
刚刚发现CORS似乎可以解决这个问题
@dudu: 要在返回的时候加上callback(json)的吧
@天涯过者: 加callback是jsonp,而且只能get。CORS应该不需要加。
@dudu: post的时候不能加callback的吗?
你的jsonp用得也不对,不能跨域就是不能跨~
JSONP是需要服务端支持的。
可以用嵌入隐藏的Flash(或者Silverlight)来支持跨域请求数据;HTML5也有特性支持跨域请求。这些我都没实践过,仅提供思路。
浏览器改设置。
跨域需要服务器配合,还是请求自己网站转发吧。简单省事。
服务器可以过滤请求的。需要服务器设置配合 Access-Control-Allow-Origin
后台服务器必须进行允许跨域请求才可以,考虑安全性问题默认是不允许的,除非对外接口做得很好