Ajax帖子在Django视图中给出错误

时间:2011-12-29 06:31:18

标签: ajax jquery django-views

我正在使用以下视图查看我的Ajax post函数,并且该调用一再失败。我似乎在这里弄错了。任何人都可以指出它

def interview(request):
    if request.is_ajax():
        if request.method == 'POST':
            name = request.POST.get('name', False)
            email = request.POST.get('email', False)
            skype_id = request.POST.get('skype_id', False)
            phone = request.POST.get('phone', False)
            time_slot_1 = request.POST.get('time_slot_1', False)
            time_slot_2 = request.POST.get('time_slot_2', False)
            time_slot_3 = request.POST.get('time_slot_3', False)        

            recipients = ['abc@gamil.com']

            subject = 'Interview Appointment'
            message = "The following person has registered for interview \n Name: %s \n Email: %s \n Skype Id: %s \n Phone: %s \n Slot-1: %s \n Slot-2: %s \n Slot-3: %s" % ( name, email, skype_id, phone, time_slot_1, time_slot_2, time_slot_3)

            from django.core.mail import send_mail
            send_mail(subject, message, sender, recipients)
            return_message = "Sent mail"
            return HttpResponse(return_message,mimetype='application/javascript')

我的javascript也非常简单,但我不知道为什么会收到错误消息

var email_val = $("#emailp").val();
var skype = $("#skypeId").val();
var phone = $("#phone_no1").val();
var t1 = $("#time_slot1").val();
var t2 = $("#time_slot2").val();
var t3 = $("#time_slot3").val();

$.ajax({
    type: "POST",
    url: "/interviews/interview_form/",
    data: {
        'name': name_val,
        'email': email_val,
        'skype_id': skype,
        'phone': phone,
        'time_slot_1': t1,
        'time_slot_2': t2, 
        'time_slot_3': t3,
    },
    success: function(){
        alert("call successful");
        $('#complete').html("Form has been Submitted");
        },
    error: function(){
        alert("call failed");
        $('#error').html("Form could not be Submitted! Please try again");
        },

});

欢迎任何见解。

1 个答案:

答案 0 :(得分:0)

您还需要提交CSRF令牌,以防止XSS攻击。代码中最直接的方法是将csrfmiddlewaretoken: '{{ csrf_token }}'添加到data字典中。另外,请确保您的视图返回context_instance,以便CSRF令牌可用。