2016-05-18 11 views
0

Ajax код:Ajax не работает в Django?

$(".addtofavourite").click(function (event) { 
    event.preventDefault(); 
    var bid = $(this).attr('id'); //integer value 
    var email = $("#userEmail").val(); 
    alert(bid + " " + email); 
    $.ajax({ 
     type: "POST", 
     url: "/ajax/userfavourite/", 
     data: { 
      'BID': bid, 
      'EmailID': email 
     }, 
     contentType: "application/json; charset=utf-8", 
     success: function (data) { 
      alert(data); 
     }, 
     failure: function (response) { 
      alert(response.d); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert(textStatus, errorThrown); 
     } 

    }); 
}); 

Views.py:

def userfavourite(request): 
    if request.method == 'POST': 
     email = request.POST['EmailID'] 
     bid = request.POST['BID'] 
     uid = UserInfo.objects.values("UID").filter(email__exact=email) 
     userfav = UserFavourite.objects.filter(UID=uid, BID=bid) 
     if not (userfav): 
      userfav = UserFavourite(UID=uid, BID=bid) 
      userfav.save() 
      data = serializers.serialize("json", "True") 
      return HttpResponse(data, content_type='application/json') 

     else: 
      data = serializers.serialize("json", "False") 
      return HttpResponse(data, content_type='application/json') 
    else: 
     data = serializers.serialize("json", "False") 
     return HttpResponse(data, content_type='application/json') 

Idon't Знать, почему Ajax всегда возвращает ошибку в alert.What ошибка в моем коде? Я хочу получить от представления true или false взамен и хочу распечатать на экране.

+0

Что ошибка вы получаете в боевой готовности? – Anoop

+0

Он просто печатает «ошибку» в предупреждении. – Amit

ответ

0

По умолчанию, в качестве меры безопасности, django использует токены CSRF (кросс-сайт запроса) для просмотра всех запросов POST. Есть два варианта: там

  1. Самый лучший вариант, чтобы добавить CSRF токен в запросе (вы можете найти его либо путем считывания информации печенья или служить в качестве шаблона)
  2. Если это не так возможно, используйте csrf_exempt декоратора, чтобы отключить его в целях Ajax (менее безопасный)

Оба метода подробно описаны в https://docs.djangoproject.com/en/1.9/ref/csrf/