2014-10-02 93 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