Put dataType: "json"
in the jquery call. The resp will be a javascript object.
$.ajax({
url: "/ajax/",
type: "POST",
data: name,
cache:false,
dataType: "json",
success: function(resp){
alert ("resp: "+resp.name);
}
});
In Django, you must return a json-serialized dictionnary containing the data. The content_type must be application/json
. In this case, the locals trick is not recommended because it is possible that some local variables can not be serialized in json. This wil raise an exception. Please also note that is_ajax
is a function and must be called. In your case it will always be true. I would also test request.method
rather than request.POST
import json
def lat_ajax(request):
if request.method == 'POST' and request.is_ajax():
name = request.POST.get('name')
return HttpResponse(json.dumps({'name': name}), content_type="application/json")
else :
return render_to_response('ajax_test.html', locals())
UPDATE : As mentioned by Jurudocs, csrf_token can also be a cause I would ecommend to read : https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…