2010-06-08 3 views
5

je la demande JQuery Ajax suivant sur mon modèle que je veux passer à mon avis django,Comment recevoir une requête ajax en utilisant 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);} 
      }); 
     } 

mon avis django ressemble à ceci:

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" 

Quand j'appelle la fonction ajax je reçois l'erreur suivante:

erreur: [objet XMLHttpRequest]

et sur le côté django je reçois l'erreur suivante:

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 

Qu'est-ce que je manque sur cet appel?

Gath

Répondre

6

Je pense que le problème est sérialisation le dictionnaire. Lorsque je l'ai testé votre code, je l'ai modifié pour ressembler à ceci et cela a fonctionné:

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") 

Assurez-vous également que vous passez une valeur pour le titre dans votre chaîne de requête GET. Je suis tombé sur cela aussi (peut-être besoin d'être vérifié par erreur). Cela aide si vous utilisez un outil comme Firebug ou même Webkit Inspector. De cette façon, vous pouvez afficher les pages d'erreur HTML renvoyées par Django à partir de votre requête XHR.

+0

cool, ça a marché. Merci. – gath

+0

@ jcady- "Assurez-vous également que vous passez une valeur pour le titre dans votre chaîne de requête GET .." qu'est-ce que cela signifie? Dans la question posée, la personne utilise POST !! – David

+0

très beaucoup beaucoup merci @jcady: D: D –

Questions connexes