【问题标题】:Retrieving Data from an URL JSON从 URL JSON 中检索数据
【发布时间】:2014-11-27 21:55:08
【问题描述】:

我正在尝试从外部 JSON 文件中检索数据。该网站有一个允许公众访问的api。我的问题是我无法访问数据。现在我显示未定义。老实说,我认为这与从服务器端进行的某些访问是不可能的。现在有没有办法用php和curl函数?

var dataFromServer;
function getPrice() {
  $.ajax({
  dataType: "jsonp",
  url: "http://forums.zybez.net/runescape-2007-prices/api/flax",
  success: handleData(dataFromServer)
});
}

function handleData(data) {
document.write(data);
//do some stuff
}

【问题讨论】:

  • 您是否收到任何错误消息(例如在控制台中?)
  • 您好,欢迎来到 SO,您能否通读this guide 并提供此案的所有相关信息?比如错误信息? :)
  • 跨域请求被阻止

标签: javascript html json xmlhttprequest


【解决方案1】:

我认为问题来自“Access-Control-Allow-Origin”。

有关它的更多信息,您可以查看:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

你可以使用这样的东西:

$.ajax({
  dataType: "jsonp",
  url: "http://forums.zybez.net/runescape-2007-prices/api/flax",
  success: function(e){console.log(e);}
});

【讨论】:

  • 也许数据不能公开访问?应该是,他们的网站在这里。 forums.zybez.net/runescape-2007-prices/api/?info
  • 我相信需要有一个允许获取数据的标头,即服务器端。现在我可以使用 php 检索数据了吗?
  • 对于这样的问题我们有两种方法1)在服务器端设置header参数。 2)使用jsonp
  • Omidam81 能不能详细解释一下?请。
  • 如果url中没有回调,如何使用jsonp?
【解决方案2】:

将其包含在 HTML 标头中:

<meta http-equiv="Access-Control-Allow-Origin" content="*"/>

然后使用这段代码(JS):

$.getJSON(
     'REPLACE_THAT_WITH_THE_JSON_URL',
     function(data){
         var tr;
         $.each (data, function (key, val) {
            tr = $('<tr/>');
            tr.append('<td>' + val.jsonfield + '</td>');
            $('table').append(tr);
         });
       });

只需替换 URL 和 jsonfield。此处显示了一个示例: LINK

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    相关资源
    最近更新 更多