Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 16, 2012 22:16:51

barabansheg
От:
Зарегистрирован: 2011-10-16
Сообщения: 114
Репутация: +  2  -
Профиль   Отправить e-mail  

Не работает ajax

Ajax реализую на jquery. На локальной машине все работает на ура.
Перенес на хостинг, при проверке csrf выдает следующую ошибку:
'NoneType' object has no attribute ‘startswith’
Вот код на который он ругается:
Файлл: /home/k/krimka/.local/lib/python2.7/site-packages/django/http/__init__.py in _load_post_and_files

            if self.method != 'POST':
                self._post, self._files = QueryDict('', encoding=self._encoding), MultiValueDict()
                return
            if self._read_started and not hasattr(self, '_raw_post_data'):
                self._mark_post_parse_error()
                return
            if self.META.get('CONTENT_TYPE', '').startswith('multipart'): # Вот здесь Почему Content_Type выставляет в None не понятно. 
                if hasattr(self, '_raw_post_data'):
                    # Use already read data
                   data = StringIO(self._raw_post_data)
                else:
                    data = self
                try:
В чем может быть проблема?

Причем другой аякс запрос работает на ура. А на локальном компе все работает как надо

В том, который работает посылается хэдер“ Content-Type application/x-www-form-urlencoded; charset=UTF-8”; А в тех, которые не пашут такого нет. Посылаю ручками(дописываю xhr.setRequestHeader() в before send. Все равно его нет(

Проблема решилась. Из одного файла убрал кусок с before send(они одинаковые во всех) и все заработало.



Fidonet. Nod 2:5034/10. Идет набор. Подробности в личку.
Мой блог

Отредактировано barabansheg (Окт. 16, 2012 22:38:03)

Офлайн

#2 Окт. 17, 2012 05:59:08

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не работает ajax

Возможно, Вам поможет вот эта статья
Django ajax csrf



Офлайн

#3 Окт. 17, 2012 10:22:50

barabansheg
От:
Зарегистрирован: 2011-10-16
Сообщения: 114
Репутация: +  2  -
Профиль   Отправить e-mail  

Не работает ajax

Этим решением я давно пользуюсь. Проблема была в том, что подключалось одновременно много файлов в которых кусок кода из beforeSend(что отсылает X-CSRFToken) дублируется. Сделал лишь в самом первом файле его и все заработало. Но на встроеном сервере работало и без этого.
Вот сам код из beforeSend:

$.ajaxSetup({ 
    beforeSend: function(xhr, settings) {
        function getCookie(name) {
	    var cookieValue = null;
	    if (document.cookie && document.cookie != '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
		    var cookie = jQuery.trim(cookies[i]);
                    // Does this cookie string begin with the name we want?
		    if (cookie.substring(0, name.length + 1) == (name + '=')) {
			cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
			break;
		    }
		}
	    }
	    return cookieValue;
        }
        if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
            // Only send the token to relative URLs i.e. locally.
	    xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
        }
    } 
});



Fidonet. Nod 2:5034/10. Идет набор. Подробности в личку.
Мой блог

Отредактировано barabansheg (Окт. 17, 2012 10:27:34)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version