¿Cómo usar JQuery y Django (ajax + HttpResponse)?

Supongamos que tengo una función AJAX:

function callpage{ $.ajax({ method:"get", url:"/abc/", data:"x="+3 beforeSend:function() {}, success:function(html){ IF HTTPRESPONSE = "1" , ALERT SUCCESS! } }); return false; } } 

Cuando mi “Vista” se ejecute en Django, quiero devolver HttpResponse('1') o '0' .

¿Cómo puedo saber si fue exitoso y luego poner esa alerta?

El flujo de trabajo típico es hacer que el servidor devuelva un objeto JSON como texto y luego interpretar ese objeto en el javascript . En su caso, puede devolver el texto {“httpresponse”: 1} desde el servidor, o usar la biblioteca python json para generarlo.

JQuery tiene un buen lector de json (acabo de leer los documentos, por lo que podría haber errores en mis ejemplos)

Javascript:

 $.getJSON("/abc/?x="+3, function(data){ if (data["HTTPRESPONSE"] == 1) { alert("success") } }); 

Django

 #you might need to easy_install this import json def your_view(request): # You can dump a lot of structured data into a json object, such as # lists and touples json_data = json.dumps({"HTTPRESPONSE":1}) # json data is just a JSON string now. return HttpResponse(json_data, mimetype="application/json") 

Una vista alternativa sugerida por Issy (linda porque sigue el principio DRY)

 def updates_after_t(request, id): response = HttpResponse() response['Content-Type'] = "text/javascript" response.write(serializers.serialize("json", TSearch.objects.filter(pk__gt=id))) return response 

En lugar de hacer todo esto desordenado, de bajo nivel ajax y JSON, considere usar el complemento de taconite para jQuery. Usted acaba de hacer la llamada al backend y se hace el rest. Está bien documentado y es fácil de depurar, especialmente si está utilizando Firebug con FF.