JQuery getJSON / ajax не работает для моего внешнего URL, но для других - PullRequest
1 голос
/ 20 января 2012

У меня есть этот код:

$.getJSON('http://www.reapp.se/cmesapp/cmes.json?callback=?', function(data){
    alert("disco");
}).error(function() {alert("fail!";});

, который отправляет предупреждение с сообщением «fail» вместо «disco», и проблема в URL, почему, я понятия не имею!

Это очень странно (кстати, это мой домен, поэтому я могу исправить эту ошибку, потому что я могу получить доступ к другим внешним доменам с помощью этого кода ... Я могу добавить, что JSON проверен (проверьте сами) и что яискал ... Не работает с этим подходом:

jquery getJSON не работает по URL

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 20 января 2012

Я думаю, что ошибка в том, что URL не возвращает JSONP только JSON.Поэтому jQuery будет сложно связать сущность с вашим запросом.

Выполните код, который вы написали в Chrome, перейдите на вкладку Сеть и посмотрите ответ.Сделайте то же самое для http://api.jquery.com/jQuery.getJSON/, и вы поймете, что последний заключит ответ в нечто вроде этого: jQuery171043198914267122746_1327059063134 ({... code})

0 голосов
/ 20 января 2012

Хорошо, после продолжительного поиска я наконец-то нашел ответ!

Я должен, прежде чем продолжить, использовать этот код для приложения для iphone, так что я не могу гарантировать, что следующее является перекрестным-browser safe.

Сначала я беру свой документ .json, размещенный на моем сервере, который является внешним от сервера, на котором работает этот код (в моем случае телефон), и изменяет его на .js (я не знаюесли это имеет значение).Во-вторых, я помещаю весь JSON-объект в парантез, а затем назначаю его переменной, которую я создаю, например:

var v = (...JSON UNMODIFIED...);

Теперь переменная v является допустимой переменной javascript.После этого вы просто динамически импортируете скрипт в свой DOM (скажем, URL-адрес «http://www.disco.com/chabs.js":

var head = document.getElementsByTagName('head')[0];
var jsonScript = document.createElement('script');
jsonScript.type = 'text/javascript';
jsonScript.src = 'http://www.disco.chabs.js';
jsonScript.onload = callback;
head.appendChild(jsonScript);

function callback(){
    //use v here as a js/json - object
}

». Сначала я беру объект из DOM, затем создаю новый элемент script. Затем я создаю скрипт-элемент javascript, установить источник в URL и onload вызывается, когда загрузка завершена, это необходимо, или документ не будет загружен, когда вы вызываете "v", наконец, я добавляю jsonScript в.

После поиска по множеству разных страниц и jquery-документации это было самое простое и, вероятно, лучшее решение.

...