Причина ваш код не работает из-за правило называется Same-origin policy. Это правило требует, чтобы все запросы AJAX делались в файл с тем же именем домена. Невозможно использовать $.getJSON
или любую другую функцию AJAX для загрузки файла из внешнего домена.
Доступно только несколько вариантов, наиболее распространенным является создание файла PHP для работы в качестве прокси-сервера и его сохранение в одном домене. Например:
proxy.php
<?php
$url = base64_decode($_GET['url']);
return file_get_contents($url);
?>
Ваша страница выше
$('#LitecoinMenue').append('<p><b>Litecoin: 42</b></p>');
$.getJSON('proxy.php?url=aHR0cDovL2FwaS5iaXRjb2luY2hhcnRzLmNvbS92MS93ZWlnaHRlZF9wcmljZXMuanNvbg==',
function(data){
$.each(data.USD, function(index,item){
$('#BitcoinMenue').append('<p><b>Bitcoin:'+ item+'</b></p>');
});
});
Важные замечания:
Это просто пример. В реальной ситуации вы, вероятно, захотите использовать cURL для получения вашего файла. Вы также должны убедиться, что он защищен, так что кто-то не может использовать Firebug для отправки запроса AJAX для извлечения большого файла (например, фильма) или может произойти сбой вашего сервера.
Как вы можете видеть, URL-адрес кодируется base64. Это необходимо для правильной обработки, так как иногда возникают проблемы при передаче некодированного URL в качестве параметра GET. Вы можете кодировать и декодировать строки base64 с помощью этих онлайн-конверторов: http://base64encode.org и http://base64decode.org, или вы можете использовать встроенные функции PHP base64_encode()
и base64_decode()
.
Эй, танки для вашего ответа. Я пытаюсь создать приложение jQuery mobile/phonegab. Таким образом, нет никакого способа получить внешний json? php не представляется возможным. – user3302260
Если вы нашли этот ответ полезным, отметьте его как принятый (зеленый галочка). –
Почему я могу загружать фотографии кота из фликкера, а простой json - невозможно? http://demos.jquerymobile.com/1.0a1/experiments/api-viewer/docs/jQuery.getJSON/index.html – user3302260