2014-10-02 91 views
2

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

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 
} 
+2

你是否收到任何错误信息(例如在控制台?) – Matthias 2014-10-02 20:09:36

+0

嗨,欢迎来到SO,能否请您仔细阅读[本指南](http://stackoverflow.com/help/) mcve)并提供案件的所有相关信息?比如也许是错误信息? :) – 2014-10-02 20:14:59

+0

跨境请求被阻止 – blueZebra44 2014-10-02 20:17:22

回答

2

我认为问题来自“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);} 
}); 
+0

也许数据不公开吗?应该是,他们的网站在这里。 http://forums.zybez.net/runescape-2007-prices/api/?info – blueZebra44 2014-10-02 20:47:07

+0

我相信需要有一个头,允许数据被采取,这是服务器端。现在我可以使用php检索数据了吗? – blueZebra44 2014-10-02 21:31:25

+0

对于这样的问题,我们有两种方法1)在服务器端设置标题参数。 2)使用jsonp – Omidam81 2014-10-02 21:33:14

0

包括在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