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.