使用Javascript加载外部JSON

时间:2013-03-30 14:20:00

标签: javascript json url external

我正试图从网站上获取一些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 - 我正试图从页面获取信息以在博客中使用它:)

1 个答案:

答案 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访问此数据。

还有其他各种获取数据的方法。最简单的可能是使用您自己的服务器从外部服务器代理数据。