2010-06-08 24 views
5

tengo la siguiente petición jQuery Ajax en mi plantilla que quiero pasar a mi vista de Django,¿Cómo recibir la solicitud ajax 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);} 
      }); 
     } 

mi punto de vista de Django es el siguiente:

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" 

Cuando llamo a la función ajax me sale el error siguiente:

error: [objeto XMLHttpRequest]

y en el lado Django me sale el siguiente error:

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é me falta en esta llamada?

Gat

Respuesta

6

creo que el problema se serializando el diccionario. Cuando probé el código, he editado para parecerse a esto y funcionó:

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

También asegúrese de que está de paso en un valor para el título en su cadena de consulta GET. Me encontré con eso también (puede necesitar verificación de errores). Ayuda si usa una herramienta como Firebug, o incluso el Webkit Inspector. De esta forma, puede ver las páginas de error HTML que Django está devolviendo de su solicitud de XHR.

+0

genial, ha funcionado. Gracias. – gath

+0

@ jcady- "También asegúrese de estar ingresando un valor para el título en su cadena de consulta GET ..." ¿Qué significa eso? En la pregunta, ¿la persona está usando POST? – David

+0

muchas gracias a @jcady: D: D –

Cuestiones relacionadas