2010-06-08 12 views
5

Ho la seguente richiesta JQuery Ajax sul mio modello che voglio passare alla mia vista Django,Come ricevere una richiesta di jax usando 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);} 
      }); 
     } 

mio punto di vista Django è simile al seguente:

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" 

quando chiamo la funzione ajax ottengo il seguente errore:

errore: [oggetto XMLHttpRequest]

e sul lato django ho il seguente errore:

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 

Cosa mi manca in questa chiamata?

Gat

risposta

6

Penso che il problema è la serializzazione del dizionario. Quando ho provato il codice, ho modificato per assomigliare a questo e ha funzionato:

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

anche assicurarsi che si sta passando un valore per il titolo nella stringa di query GET. Mi sono imbattuto in quello (potrebbe essere necessario controllare l'errore). Aiuta se usi uno strumento come Firebug o anche l'ispettore Webkit. In questo modo puoi visualizzare le pagine di errore HTML che Django sta restituendo dalla tua richiesta XHR.

+0

cool, ha funzionato. Grazie. – gath

+0

@ jcady- "Assicurati anche di passare un valore per il titolo nella stringa di query GET .." cosa significa? Nella domanda posta la persona usa il POST !! – David

+0

molto molto molto grazie @jcady: D: D –

Problemi correlati