JSONP-запрос с использованием jquery $ .getJSON не работает на правильно сформированном JSON - PullRequest
0 голосов
/ 11 марта 2010

Я не уверен, возможно ли это сейчас с URL, который я пытаюсь. Пожалуйста, смотрите этот URL: http://www.heiaheia.com/voimakaksikko/stats.json

Он всегда выполняет одну и ту же функцию заполнения "voimakaksikkoStats". Это правильно сформированный JSON, но я не смог загрузить его с удаленного сервера. Нужна ли какая-то работа со стороны сервера или он может быть загружен с помощью JavaScript? Я думаю, что проблемы должны быть связаны с этой функцией обратного вызова ...

JQuery не является обязательным требованием, но было бы неплохо.

Это (callback = voimakaksikkoStats) ничего не возвращает (firebug -> net -> response), и оповещение не срабатывает:

$.getJSON("http://www.heiaheia.com/voimakaksikko/stats.json?callback=voimakaksikkoStats", function(data){
    alert(data);
})

но это (обратный вызов =?):

 $.getJSON("http://www.heiaheia.com/voimakaksikko/stats.json?callback=?", function(data){
    alert(data);
})

возвращается:

voimakaksikkoStats({"Top5Sports":[],"Top5Tests":{"8":"No-exercise ennuste","1":"Painoindeksi","2":"Vy\u00f6t\u00e4r\u00f6n ymp\u00e4rys","10":"Cooperin testi","4":"Etunojapunnerrus"},"Top5CitiesByTests":[],"Top5CitiesByExercises":[],"ExercisesLogged":0,"Top5CitiesByUsers":[""],"TestsTaken":22,"RegisteredUsers":1});

Но я не могу получить к нему доступ ... В обоих примерах предупреждение никогда не срабатывает. Может кто-нибудь помочь?

Ответы [ 5 ]

1 голос
/ 12 марта 2010
<script type="text/javascript">
function voimakaksikkoStats(stats) {
  var ul = new Element('ul');
  ul.insert(new Element('li').update('Registered users: '+ stats['RegisteredUsers']));
  ul.insert(new Element('li').update('Tests taken: '+ stats['TestsTaken']));
  ul.insert(new Element('li').update('Top5 sports: '+ stats['Top5Sports'].join(', ')));
  $(document.body).insert({'bottom': ul});
}
</script>
<script type="text/javascript" src="http:/www.heiaheia.com/voimakaksikko/stats.json"></script>

В этом примере Prototype.js используется для создания списка с некоторыми данными из данной статистики, а затем помещает этот список в конец тела документа.

0 голосов
/ 11 марта 2010
<script type="text/javascript">
function voimakaksikkoStats(obj) {
    alert(obj.TestsTaken);
}
</script>
<script type="text/javascript" src="http://www.heiaheia.com/voimakaksikko/stats.json"></script>

Я никогда не работал с jQuery, но простой код, приведенный выше, решил мои проблемы. Я нашел помощь от Yahoo: http://developer.yahoo.com/common/json.html

0 голосов
/ 11 марта 2010

Чтобы заставить вашу тестовую функцию работать, попробуйте изменить на callback=?

0 голосов
/ 11 марта 2010

Если ваш запрос направляется в другой домен, попробуйте использовать метод jsonP . Поиск документов jsonP

0 голосов
/ 11 марта 2010

скрипт пытается получить json из http://www.heiaheia.com также из http://www.heiaheia.com?

если это не причина, в настоящее время он не авторизован для отправки запроса (с использованием javascript) на другой сервер, чем тот, который обслуживает скрипт

...