Не удалось получить ответ JSON

    var myurl="https://raw.github.com/currencybot/open-exchange-rates/master/latest.json";

    $.ajax(
    {
     url:myurl,
     type:"POST",
     dataType:"JSONP",
     success:function(myObj)
       {
        console.log(myObj);  
       }
   });

Я попытался использовать сокращение getJSON, но консоль выдает ошибку "использовать запрос POST". И используя приведенный выше код, консоль заявляет, что "Неверная метка".

3 ответа

Используйте $.getJSON (), это сокращенная функция и очень эффективная.

var myurl="https://raw.github.com/currencybot/open-exchange-rates/master/latest.json";

$.getJSON(
  myurl,
  function(data) {
      //manipulate your json
});

Но для запроса JSONP у вас должен быть параметр обратного вызова в URL

Как указано в документации [здесь]

Если URL содержит строку "callback=?" (или аналогичный, как определено серверным API), запрос обрабатывается как JSONP.

Вы должны изменить код, попробуйте это:

$.post(
  myurl,
  {},
  function(data){
    alert(data);
  },'json'
);

переменная data является объектом json.

Междоменный JSONP вовсе не AJAX. Он не использует XMLHttpRequest. Это не более чем динамический элемент скрипта, который загружает код JavaScript.

Пытаться:


var req = $.ajax({
    url : myurl,
    dataType : "jsonp"
});

req.success(function(myObj) {
    console.log(myObj);
});

req.error(function() {
    console.log('some error occured');
});

Я думаю, что конечный сервер "https://raw.github.com" не поддерживает JSONP. Таким образом, вам, вероятно, придется создать конечную точку прокси на вашем сервере для доступа к этим данным. По сути, создайте конечную точку на вашем собственном сервере, которая загружает эти данные, используя любой метод, который имеет смысл (curl и т. Д.), И возвращает его точно как есть. Тогда вы можете использовать обычный AJAX. надеюсь, это поможет

Другие вопросы по тегам