2014-10-02 6 views
2

Я пытаюсь получить данные из внешнего файла JSON. На веб-сайте есть api, который позволяет публичный доступ. Моя проблема в том, что я не могу получить доступ к данным. Теперь я показываю undefined. Ну, честно говоря, я думаю, что это невозможно сделать с некоторым доступом с другой стороны. Теперь есть способ с 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

+0

Приветствую вас, пожалуйста, прочитайте [это руководство] (http://stackoverflow.com/help/ mcve) и предоставить всю соответствующую информацию по этому делу? Возможно, это сообщение об ошибке? :) –

+0

Запрос на перекрестный запрос заблокирован – blueZebra44

ответ

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

+0

Я считаю, что нужно иметь заголовок, который позволяет принимать данные, которые являются серверными. Теперь я могу получить данные с помощью php? – blueZebra44

+0

Для такой проблемы у нас есть два метода: 1) установить параметр заголовка на стороне сервера. 2) using jsonp – Omidam81

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

Смежные вопросы