用Javascript加载外部JSON

用Javascript加载外部JSON,javascript,json,url,external,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,stat

我试图从一个站点捕获一些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>

$(文档).ready(函数(){
$.get(”http://www.w3schools.com/jquery/demo_test.asp,功能(数据、状态){
文件。写入(“数据:+数据+”\n
状态:+状态); }); });
但问题在于我的第二个例子:

<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>

$(文档).ready(函数(){
$.get(”https://btc-e.com/api/2/ltc_usd/ticker,功能(数据、状态){
文件。写入(“数据:+数据+”\n
状态:+状态); }); });

PS-我试图从页面获取信息,以便在博客中使用它:)

外部JSON with jQuery意味着使用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\u callback
,但每次都有一个唯一的名称。)

这显然依赖于服务器的帮助,因此需要将服务器设置为支持JSONP。表示这一点的正常方法是在URL的末尾添加
回调=?
,其中
是要调用的函数的名称。如果是,您将看到脚本没有更改。这表明该网站不支持JSONP请求,因此无法使用JSONP访问此数据


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

第二个示例中是否存在任何错误、日志消息等?您无法向外部域发出Ajax请求,除非它们启用了CORS。看,如果我没有自己的服务器呢?有没有一种方法,只使用javascript捕获并使用此信息?@user2227245如果服务器不支持它,则不会。这是Javascript中的一个安全特性,通常是一件非常好的事情。