0

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

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

和 HTML

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

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

4

3 回答 3

3

一个建议,因为您尝试访问的站点似乎也不支持 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
    });
  });
});

希望有帮助

于 2012-05-08T10:22:02.890 回答
2

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

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

例如,您可以创建 jquery 使用以下代码访问的示例 test.php 文件:

<?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 之类的东西很好,但有时它们有点矫枉过正。我希望这有帮助!

于 2012-05-08T10:28:52.410 回答
1

从外观上看,您遇到了同源策略的情况。这基本上表明,您不能使用从页面上的其他主机检索到的数据。

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

另一种选择是在您的服务器上编写一个脚本,该脚本充当数据的代理:从您的页面检索请求,将请求转发到http://www.bigpara.com,从中获取结果http://www.bigpara.com并将这些结果传递到您的页面。

于 2012-05-08T10:12:35.830 回答