2015-01-15 162 views
0

Django中的我的AJAX方法似乎沒有工作,我無法確定它在哪裏壞了,因爲我實際上沒有在Django調試日誌中發現任何錯誤,它返回了200狀態碼。爲什麼我的AJAX發佈請求無法正常工作?

模板

<script type="text/javascript"> 
    var my_app = { 
     username: {{ request.user.username }} 
    }; 
</script> 
<script> 
$(document).ready(function() { 
    $(".delete_button").click(function() { 
     var id = $(this).attr('id'); 
     $.ajax({ 
      type: "POST", 
      url: "/accounts/" + my_app.username + "/profile_listview", 
      data: { entryname:id }, 
      success: function(response){ 
       alert(response.success); 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 

或者這個錯誤是在實際的jQuery AJAX部分? Chrome的開發者控制檯是給我下面的錯誤:

Uncaught ReferenceError: benjamin is not defined(index):223 (anonymous function) 

我不知道這意味着什麼確切,但它說,本傑明,這個事實意味着該名稱正確分配。

VIEWS.PY 

latest_entries=Entry.objects.order_by('-pub_date')[:16] 

@login_required 
def delete_object(request): 
    if request.is_ajax(): 
     print "ajax request detected" 
     object_name = request.POST.get('entryname') 
     Entry.objects.get(id=object_name).delete() 
     return HttpResponseRedirect('/storefront/') 

另一件事我應該提到的是,我增加了打印「Ajax請求檢測」,以確認是否甚至被調用的方法,但是不打印到終端時,我正在測試這個,我不知道爲什麼。

+0

如果AJAX試圖顯示警報,你爲什麼要在視圖中執行重定向? 在用戶名值中使用引號以使JavaScript檢測值而不是變量。 – 2015-01-15 20:24:13

+0

噢好吧,我要去掉警報。我想要的只是重定向。 – stephan 2015-01-15 21:21:14

+0

如果你只想重定向,你應該返回一個HttpResponse和你想要重定向到的URL,並在AJAX成功呼叫中重定向 – 2015-01-15 21:35:46

回答

2

你需要把你的用戶名在引號:

var my_app = { 
    username: '{{ request.user.username }}' 
}; 

Benjamin is not defined錯誤,因爲JavaScript認爲你在引用該名稱的變量,而不是定義一個字符串值。

+0

你認爲這也是爲什麼在我的視圖方法中檢測到「ajax請求」沒有打印? – stephan 2015-01-15 17:33:13