我正试图从网站上获取一些JSON信息。
我的第一个例子只是一个测试和工作:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$.get("http://www.w3schools.com/jquery/demo_test.asp",function(data,status){
document.write("Data: " + data + "\n<br>Status: " + status);
});
});
</script>
但问题出在我的第二个例子中:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$.get("https://btc-e.com/api/2/ltc_usd/ticker",function(data,status){
document.write("Data: " + data + "\n<br>Status: " + status);
});
});
</script>
PS - 我正试图从页面获取信息以在博客中使用它:)
答案 0 :(得分:0)
使用jQuery的外部JSON意味着使用JSONP。这适用于返回Javascript脚本的页面,该脚本使用您需要的数据调用函数(您定义的函数)。您无法将数据作为普通JSON获取。因此响应需要如下所示:
json_callback({"ticker":{"high":0.77,"low":0.64,"avg":0.705,"vol":107049.5563,"vol_cur":151754.22482,"last":0.76,"buy":0.766,"sell":0.75811,"server_time":1364653244}});
而不是
{"ticker":{"high":0.77,"low":0.64,"avg":0.705,"vol":107049.5563,"vol_cur":151754.22482,"last":0.76,"buy":0.766,"sell":0.75811,"server_time":1364653244}}
(该函数不会被称为json_callback
,但每次都会有一个唯一的名称。)
这显然依赖于服务器的帮助,因此需要设置服务器以支持JSONP。指示此问题的常规方法是在网址末尾添加callback=?
,其中?
是您要调用的函数的名称。如果we try this,您会看到脚本没有更改。这表明该网站不支持JSONP请求,因此无法使用JSONP访问此数据。
还有其他各种获取数据的方法。最简单的可能是使用您自己的服务器从外部服务器代理数据。