Не удалось получить ответ 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. надеюсь, это поможет