Tôi có cuộc gọi ajax sau để cập nhật một lĩnh vực cụ thể của một mô hìnhAjax cuộc gọi thất bại trong Django
$("#updateLink").click(function(){
var dec_text = $('#desc_text').val();
$.ajax({
type: "POST",
url:"https://stackoverflow.com/users/update_desc/",
data: {
'val': dec_text,
},
success: function(){
$(".display, .edit").toggle();
$("#descText").html(dec_text);
},
error: function(){
alert("Error");
},
});
return false;
});
và quan điểm của tôi là thế này
@csrf_exempt
def update_desc(request):
if request.is_ajax():
if request.method == 'POST':
desc_text = request.POST.get('val', False)
if desc_text:
profile = user.profile
profile.desc = desc_text
profile.save()
return_message = "Sent mail"
return HttpResponse(return_message,mimetype='application/javascript')
Tôi liên tục nhận được một thông báo lỗi và tôi không biết cách giải quyết vấn đề này. Tôi thậm chí còn sử dụng trình trang trí csrf_exempt
để giải quyết sự cố nếu sự cố là do thiếu csrf token
nhưng vẫn còn sự cố.
Ngoại trừ một ajax post
trong mẫu base
mẫu của tôi, tất cả các cuộc gọi ajax đều không thành công. Ai có thể xin giúp đỡ để hiểu những gì đang xảy ra ở đây. Tôi có thể cung cấp thêm một số chi tiết nếu cần.
Edit:
Tôi đã thêm một tập tin js
chứa https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax này trong mẫu cơ sở của tôi, vì vậy nó có nghĩa là nó có mặt trong tất cả các mẫu của tôi. Và tôi đang sử dụng phiên bản django 1.3.
Tôi hy vọng bạn vẫn gặp lỗi csrf_token. Nếu vậy câu trả lời của tôi được đăng bên dưới, hãy ghi lại lỗi sau khi bạn sử dụng csrf_exempt. –
Thực ra tôi không biết làm thế nào để có được lỗi, như bạn có thể thấy tôi vừa đặt một cảnh báo trong cuộc gọi lại 'error' cho tôi biết rằng cuộc gọi ajax của tôi không thành công nhưng nó không cho tôi biết lỗi là gì. Làm thế nào tôi có thể nhận được lỗi? – Sachin
Thứ nhất, trong tệp settings.py của bạn DEBUG = True. Điều này sẽ không hiển thị lỗi ajax của bạn nhưng chắc chắn những người khác không được phục vụ. –