2012-05-08 70 views
0

我有一个没有回调的JSON调用。我想解析数据。jQuery和JSON网址没有回调

$("button").click(function(){ 
    $.getJSON(
     "url", 
     function(result){ 
      $.each(result, function(i, field){ 
       $("div").append(field + " "); 
     }); 
    }); 
});​ 

和HTML

<button>Get JSON data</button> 
<div></div>​ 

但没有任何获取的数据。我的代码有什么问题?

+1

该网站需要支持jsonp才能做到这一点。像您使用它的JSON只对同一台服务器上的文件起作用。 – OptimusCrime

回答

2

我Sarfraz同意。这是因为它是基于远程的请求。我过去解决这个问题的一种方法是使用服务器端文件(如.php或.aspx)加载URL,然后在该本地可访问的文件上执行getJSON。

这是因为您的服务器端文件可以连接到远程主机。

例如,你可以创建一个示例test.php的文件,该文件的jQuery使用此代码访问:

<?php 
header('Content-type: application/xml'); 
//Get the remote content and output it for Jquery's Local use 
echo file_get_contents(url); 
?> 

然后只需调用(当然是相对的):

$("button").click(function(){ 
    $.getJSON(
     "/test.php", 
    function(result){ 
     $.each(result, function(i, field){ 
      $("div").append(field + " "); 
     }); 
    }); 
});​ 

使用像JSONP是好,但有时他们是矫枉过正。 我希望这有助于!

+0

谢谢,但我已经做了这个jQuery和HTML,而不使用PHP或任何服务器端编程。 – TheNone

+0

你没有使用任何服务器端代码的原因是什么? – Nabster

1

从外观上看,您遇到了same origin policy的情况。这基本上表明,您不能使用从您网页上的其他主机检索到的数据。

由于找不到服务的(英文)API文档,我建议您检查JSONP的API并尝试使用该功能(如果存在)。

另一种选择是写你的服务器上的脚本,它充当数据代理:检索从你的页面的请求,将请求转发到http://www.bigpara.com,从http://www.bigpara.com得到结果,然后把这些结果到您的网页。

+1

我认为OP知道他正在运行SOP(他在参数中有'callback')。我认为他正在寻找一种方法来做到这一点,而无需指定回调 –

2

一个建议,因为你正在试图访问不列入该网站似乎支持JSONP为好,你可以尝试从一些服务器端语言的内容,说PHP,像

<?php 
echo file_get_contents(url); 
?> 

而且使用jQuery的的getJSON

$(document).ready(function(){ 
    $.getJSON('your_server-side_page.php', function(data){ 
    $.each(data, function(i, entry) { 
     // Process your data here 
    }); 
    }); 
}); 

希望帮助