jQuery Ajax не работает при доступе к ресурсу (Django Tastypie)

Я создал простой ресурс, который через GET выводит мой объект json. URL-адрес http://127.0.0.1:8000/api/v1/advert/?format=json и работает нормально. Теперь, когда я пытаюсь получить доступ к ресурсу с помощью метода jQuery ajax, я получаю;

введите здесь описание изображения

введите здесь описание изображения

Это мой JavaScript;

$.ajax({
        url : 'http://127.0.0.1:8000/api/v1/advert/',
        dataType : 'json',
        type : 'GET',
        data : { format: 'json' },
        success : function(data) {
            console.log(data);
        }
    });

Что вызывает это и, что более важно, как мне это исправить? Та же ошибка возникает, когда я пытаюсь реализовать Django Piston с простым ресурсом, поэтому я предполагаю, что проблема больше связана с фактическим запросом AJAX?

РЕДАКТИРОВАТЬ.

Я немного изменил вызов jQuery ajax и включил содержимое запроса.


person Kevin    schedule 07.07.2012    source источник
comment
Разве вы не должны использовать параметр данных для включения параметров GET (например, формат)?   -  person Hedde van der Heide    schedule 07.07.2012
comment
Привет, я обновил код JS, чтобы теперь использовать параметр данных. К сожалению, это все еще не удается.   -  person Kevin    schedule 07.07.2012


Ответы (2)


После нескольких головоломок и попыток эмулировать ошибку с помощью curl я наконец нашел источник проблемы. Я использую браузер Google Chrome с расширением Adblock Plus (Adblock Plus (Beta) 1.2). После отключения этого расширения ajax-запрос работает нормально! Я не уверен, как именно ABP влиял на это, но это определенно было источником проблемы.

person Kevin    schedule 07.07.2012

Я попробовал ваш ajax-код для собственного вкусного API, который, как я знаю, работает.

Я также получаю «красную» строку результата для запроса OPTIONS, который изначально отправляет команда jQuery ajax. Если я посмотрю на ответ на этот запрос, я увижу, что на самом деле это OK 200.

Кажется, что вызов ajax делает запрос OPTIONS, получает статус ответа 200, а затем отменяет передачу, поскольку в заголовке ответа «Разрешить» уже есть все необходимое.

В вашем случае похоже, что по какой-то причине он действительно не работает (или, может быть, браузер просто описывает это по-другому?).

Можете ли вы добавить заголовки ответов, которые вы получаете?

(Я бы поделился своими скриншотами, но я все еще работаю над своей репутацией :-/)

person Sebastian    schedule 07.07.2012
comment
Привет, я обновил исходный пост дополнительными скриншотами и немного изменил вызов ajax. Он по-прежнему терпит неудачу (хотя и немного по-другому - метод запроса теперь GET вместо OPTIONS). Также нет информации о заголовке ответа, поэтому я не думаю, что вызов ajax действительно туда попадает? - person Kevin; 07.07.2012