Функция getJSON всегда возвращает null

Я пытаюсь сделать http-запрос с помощью функции jquery getJSON. Я реализовал это так...

<script type="text/javascript">
$(function(){
$("#query").keyup(function(event) {
        keyword = $("#query").val();
        $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", showdata );
    });
});
function showdata(data, status) {
    alert(data + ":" + status);
}
</script>

Это всегда возвращает ноль. Я проверил заголовки HTTP, они также пусты. Но если я напрямую использую URL-адрес, он отображает JSON в окне браузера.

Что я делаю неправильно?

Некоторые предлагали мне использовать JSONP, но в URL-адресе, который я на самом деле буду использовать, есть некоторая конфиденциальная информация, которую я не хочу раскрывать, поэтому я хочу придерживаться getJSON.

С уважением


person vikmalhotra    schedule 27.07.2010    source источник
comment
на самом деле ваши коды несколько похожи на пример api.jquery.com/jquery.getJSON. .. Мне интересно, занимаетесь ли вы чем-нибудь другим...   -  person Reigel    schedule 27.07.2010
comment
@Reigel - единственная вещь, которую я делаю по-другому, - это использование другого URL. Я попробовал тот, что указан в getJSON, он тоже вернул ноль, поэтому я подумал, что есть некоторая проблема.   -  person vikmalhotra    schedule 27.07.2010
comment
ваша ссылка/URL на том же домене?   -  person Reigel    schedule 27.07.2010
comment
@Reigel - нет, это не в том же домене.   -  person vikmalhotra    schedule 27.07.2010
comment
хорошо, прочитайте это en.wikipedia.org/wiki/Same_origin_policy   -  person Reigel    schedule 27.07.2010
comment
Вы уже используете JSONP :)   -  person James    schedule 27.07.2010


Ответы (2)


@Reigel - нет, это не в том же домене.

ваша проблема связана с same-origin-policy

person Reigel    schedule 27.07.2010
comment
Значит ли это, что я должен использовать JSONP? Кроме того, почему API мерцания работал здесь - api.jquery.com/jquery.getJSON, а не мой API? - person vikmalhotra; 27.07.2010
comment
не могли бы вы объяснить, почему работает jsfiddle.net/htcxT/1? Это точно такой же код из OP - person jAndy; 27.07.2010
comment
@jAndy - оба работают. единственное, URL-адрес OP был просто примером ... Настоящий URL-адрес OP не находится в том же домене и не использует JSONP. - person Reigel; 27.07.2010

Как предположил @Reigel, проблема связана с политикой одного и того же происхождения, поэтому я решил создать прокси-сервер, используя серверный код, который возвращает правильный json.

person vikmalhotra    schedule 27.07.2010