2013-03-30 2 views
0

Я пытаюсь поймать некоторую информацию JSON с сайта.Загрузка внешнего JSON с помощью Javascript

Мой первый Exemple его просто тест и работа:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
</script> 
<script> 
$(document).ready(function(){ 
$.get("http://www.w3schools.com/jquery/demo_test.asp",function(data,status){ 
     document.write("Data: " + data + "\n<br>Status: " + status); 
    }); 
}); 
</script> 

Но проблема ИТС в моем втором примере:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
</script> 
<script> 
$(document).ready(function(){ 
$.get("https://btc-e.com/api/2/ltc_usd/ticker",function(data,status){ 
     document.write("Data: " + data + "\n<br>Status: " + status); 
    }); 
}); 
</script> 

PS - я пытаюсь получить информацию от страницы использовать его в блоге :)

+1

Есть ли ошибки, сообщения журнала и т. Д. Со вторым примером? – reima

+1

Вы не можете делать запросы Ajax внешним доменам, если только они не активировали CORS. См. Https://en.wikipedia.org/wiki/Same_origin_policy. –

ответ

0

Внешний JSON с jQuery означает использование JSONP. Это работает на странице, возвращающей скрипт Javascript, который вызывает функцию (которую вы определяете) с данными, которые вам нужны. Вы не можете получить данные как обычные JSON. Таким образом, ответ должен выглядеть следующим образом:

json_callback({"ticker":{"high":0.77,"low":0.64,"avg":0.705,"vol":107049.5563,"vol_cur":151754.22482,"last":0.76,"buy":0.766,"sell":0.75811,"server_time":1364653244}}); 

вместо

{"ticker":{"high":0.77,"low":0.64,"avg":0.705,"vol":107049.5563,"vol_cur":151754.22482,"last":0.76,"buy":0.766,"sell":0.75811,"server_time":1364653244}} 

(функция не будет называться json_callback, но будет иметь уникальное имя каждый раз.)

Это, очевидно, опирается на помощь сервера, поэтому сервер должен быть настроен для поддержки JSONP. Обычный способ указать это: добавьте callback=? в конец URL-адреса, где ? - это имя функции, которую вы хотите вызвать. Если we try this, вы увидите, что сценарий не изменяется. Это указывает на то, что веб-сайт не поддерживает запросы JSONP, поэтому нет способа получить доступ к этим данным с помощью JSONP.

Существуют различные методы получения данных. Простейший, вероятно, проксирование данных с внешнего сервера с вашего собственного сервера.

+0

А если у меня нет собственного сервера? Есть ли способ, используя только javascript, чтобы поймать эту информацию и использовать ее? – user2227245

+0

@ user2227245 Не, если сервер не поддерживает его. Это функция безопасности в Javascript, и, как правило, это очень хорошо. – lonesomeday

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