2015-04-29 132 views
1

我在我的Django模板文件中的Ajax調用爲:Django的返回無效Ajax響應

$(document).ready(function() { 
    $("button#wdsubmit").click(function(){ 
     $.ajax({ 
      type: "post", 
      url: "/audit/addwd/", 
      data: $('form.wddetails').serialize(), 
      dataType: "json", 
      success: function(msg){ 
      alert(msg); 
       alert('Added Successfully'); 
       $("#newwd").modal('hide'); //hide popup 
      }, 
      error: function(msg){ 
       alert(msg.success); 
      } 
     }); 
    }); 
}); 

形式:

class WDForm(ModelForm): 
    class Meta: 
     model = WDModel 
     fields = '__all__' 

,並查看Django是:

def addwd(request): 
     if request.method == 'POST': 
      updated_request = request.POST.copy() 
      updated_request.update({'updated_by': request.user.username}) 
      form = WDForm(updated_request) 
      if form.is_valid(): 
       form.save() 
       response = simplejson.dumps({'success': True}) 
       return HttpResponse(response, content_type="application/json", mimetype='application/json') 
      else: 
       response = simplejson.dumps({'error': True}) 
       return HttpResponse(response , content_type="application/json") 

每當我做了一個Ajax調用,它總是返回錯誤,即使我發送了成功(意味着表單有效並且數據被成功推送到數據庫)。

我也嘗試發送response = {'success':True}不起作用。

請幫我解決這個問題。

環境細節: Python的優化版本:3.4 Django的:1.7 Windows操作系統8

我在這一行懷疑 「response = simplejson.dumps({'success': success})

+0

您需要顯示您的「表單」,表單可能會失敗。另外,請在if if塊後修正縮進。 – Anzel

+0

@Anzel表單沒有失敗,正如我在問題中提到的那樣,數據已成功保存到數據庫中(這意味着form.is_valid爲真) – Galaxy

+0

那麼'success'值是什麼來自?或者你錯過了字符串的引號?您需要顯示代碼中的實際內容。同樣,當你在做Ajax調用時,檢查它也更有意義。 **假設**你的一些代碼正在工作是邪惡的 – Anzel

回答

3

你可以嘗試JsonResponse對象。

from django.http import JsonResponse 
return JsonResponse({'foo':'bar'}) 
+0

感謝您的快速響應。我一直在努力解決這個問題,花費一整天的時間來找出問題所在。不過我不知道simplejson.dumps()或json.dumps()函數有什麼問題 – Galaxy