json cross origin не работает с callback=?

У меня проблема с получением данных JSON на mangaeden.com. Позволь мне объяснить:

Если я использую этот скрипт

$.getJSON('http://www.mangaeden.com/api/list/1/', function(data) {

            $.each(data.manga, function(key, val) {
                something();
            });
        });

Я получаю "Ошибка Access-Control-Allow-Origin". Поэтому я использую обратный вызов:

$.getJSON('http://www.mangaeden.com/api/list/1/?&callback=?', function(data) {

            $.each(data.manga, function(key, val) {
                something();
            });
        });

Теперь сервер отправляет мне данные json, но они оцениваются как скрипт, поэтому я получаю ошибку «Uncaught SyntaxError: Unexpected token:».

Как, черт возьми, я могу сделать?


person JoP    schedule 29.08.2012    source источник
comment
видимо API сломан или просто не поддерживает jsonp   -  person Rene Pot    schedule 29.08.2012
comment
В вашем бэкенде попробуйте добавить к результату префикс, например m=, как будто вы присваиваете его переменной.   -  person timidboy    schedule 29.08.2012
comment
Я думаю, что не разрушил это, но я не владелец mangaeden.com, поэтому я не могу редактировать бэкэнд.   -  person JoP    schedule 29.08.2012


Ответы (3)


Я сделал решение с YQL

Запрос YQL клик

Рабочий пример http://jsfiddle.net/gJCk3/

person sofl    schedule 29.08.2012

Вам нужно удалить знак «&» перед «обратным вызовом».

person Jacob Lauritzen    schedule 29.08.2012
comment
Вы уверены, что они поддерживают обратные вызовы json? - person Jacob Lauritzen; 29.08.2012
comment
Нет, я не уверен. Я просто хочу получить данные json, мне все равно, как. Я схожу с ума :( Проблема в том, что я не знаю, почему данные интерпретируются как скрипт, если я ставлю параметр обратного вызова - person JoP; 29.08.2012
comment
Использование может попасть в PHP, если вы используете это? - person Jacob Lauritzen; 29.08.2012

вам следует изменить этот API http://www.mangaeden.com/api/list/1/?callback=jsonpcb.. результат должен быть таким

jsonpcb({
  "manga": [
    {
      "i": "4e70ea93c092255ef70074f3",
      "a": "dragonball-af",
      "im": null,
      "t": "DragonBall AF"
    },
..
});
person alessio271288    schedule 29.08.2012
comment
если я помещаю что-то в качестве параметра обратного вызова (например, callback=jsonpcb), я получаю ошибку Access-Control-Allow-Origin. $.getJSON('mangaeden.com/api/list/1/?callback =jsonpcb', function(data) { something(); }); }); функция jsonpcb (данные) { предупреждение (данные); } - person JoP; 29.08.2012
comment
вы также изменяете свой API, вставляя jsonpCallback - person alessio271288; 29.08.2012
comment
Хорошо, но мне нужно каким-то образом получить эти данные JSON. Может быть, я могу просто сделать HTTP-запрос? - person JoP; 29.08.2012
comment
здесь вы найдете возможное решение / но вы должны реализовать прокси-сервис - person alessio271288; 29.08.2012