Как получить ajax-запрос, используя django? - PullRequest
5 голосов
/ 08 июня 2010

У меня есть следующий запрос JQuery Ajax для моего шаблона, который я хочу передать моему представлению django,

function loginUser(){
    $.ajax({
            type:"POST",
            url :"/login-user/",
            data:"title=ajax call",
            datatype:"json",
            error:function(data){alert('Error:'+data);}
            success:function(data){alert('OK!'+data.message+','+data.code);}
          });
        }

мой взгляд на Джанго выглядит так:

def login_user(request):
    print "garbage"
    print request.GET['title']
    return_dict = {'message': 'bla bla bla','code':324}
    json=serialize("json",return_dict)
    return HttpResponse(json, mimetype="application/x-javascript"

Когда я вызываю функцию ajax, я получаю следующую ошибку:

Ошибка: [объект XMLHttpRequest]

и на стороне django я получаю следующую ошибку:

Traceback (most recent call last):
  File "c:\python26\lib\site-packages\django\core\servers\basehttp.py", line 281, in run
    self.finish_response()
  File "c:\python26\lib\site-packages\django\core\servers\basehttp.py", line 321, in finish_response
    self.write(data)
  File "c:\python26\lib\site-packages\django\core\servers\basehttp.py", line 417, in write
    self._write(data)
  File "c:\python26\lib\socket.py", line 297, in write
    self.flush()
  File "c:\python26\lib\socket.py", line 284, in flush
    self._sock.sendall(buffer)
error: [Errno 10053] An established connection was aborted by the software in your host machine

Что мне не хватает на этом звонке?

Гаф

1 Ответ

6 голосов
/ 08 июня 2010

Я думаю, что проблема заключается в сериализации словаря. Когда я проверил ваш код, я отредактировал его так, чтобы он выглядел следующим образом:

from django.utils import simplejson
def login_users(request):
    print "garbage"
    print request.GET['title']
    return_dict = {'message': 'bla bla bla','code':324}
    json = simplejson.dumps(return_dict)
    return HttpResponse(json, mimetype="application/x-javascript")

Также убедитесь, что вы передаете значение для заголовка в строке запроса GET. Я столкнулся с этим также (возможно, должен быть проверен на ошибку). Это помогает, если вы используете такой инструмент, как Firebug или даже Webkit Inspector. Таким образом, вы можете просмотреть страницы ошибок HTML, которые Django возвращает из вашего запроса XHR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...