2015-11-04 222 views
0

我試圖用Django使用ajax刪除對象。我送請求方法「POST」賭注回報「GET」,提高錯誤返回請求方法= GET但我發送請求= POST(ajax)

function delete_bank_question(pk){ 
    if (confirm('are you sure you want to remove this question?')==true){ 
     url = "/question/delete/" 
     console.log("Deleted clicked"); 
     $.ajax({ 
      url : url, 
      type : "POST", 
      method : "post", 
      data : {'pk': pk}, 
      success : function(json) { 
      $('#list_question_pk_'+pk).hide(); 
      console.log("element deletion successful"); 
      $("#deleteModal").toggle(); 
     }, 
     error : function(xhr,errmsg,err) { 
      console.log(xhr.status + ": " + xhr.responseText); 
      console.log("error when removing element"); 
     }}); 
    } 
    else { 
     return false; 
    } 
}; 

,並有觀點

class QuestionDeleteView(DeleteView): 
model = Question 
template_name = 'questionbank.html' 

def get_object(self, queryset=None): 
    pk = self.request.POST.get("pk") 
    element = Question.objects.get(pk=pk) 
    return element 

def get_success_url(self): 
    return reverse('questions:questionbank') 

唯一的區別是被JS用AJAX(請求GET)繪製HTML

function item_builder(data,pk){ 
    var item = ['<li class="questions-item text-center" id="list_question_pk_' +pk+ '">']; 
    item.push('<div class="col-md-4 "><a href="#" class="question-name pull-right">'); 
    item.push(data.description); 
    item.push('</a></div>'); 
    item.push('<div class="col-md-4">'); 
    item.push('<p class="question-type '+css_mapper[data.question_type]+'">'); 
    item.push(type_mapper[data.question_type]); 
    item.push('</p>'); 
    item.push('</div>'); 
    item.push('<div class="col-md-4">'); 
    item.push('<p class="pull-left">'); 
    item.push('<i class="fa fa-ellipsis-h"></i>'); 
    item.push('<div class="pull-left question-setting" >'); 
    item.push('<a href="#" id="edit-icon" class="wow fadeInDown"'); 
    item.push('data-wow-duration="0.5s">'); 
    item.push('<i class="fa fa-pencil fa-1x"></i>'); 
    item.push('</a>') 
    item.push('<a href="#" data-toggle="modal" data-pk="'+pk+'" id="delete-icon" '); 
    item.push('data-target="#deleteModal" class="wow fadeInDown delete-icon"'); 
    item.push('data-wow-duration="0.3s">'); 
    item.push('<i class="fa fa-trash-o fa-1x"></i>'); 
    item.push('</a>') 
    item.push('</div>'); 
    item.push('</p>'); 
    item.push('</div>'); 
    item.push('</li>'); 
    return item.join(' '); 
} 

並且存在從檢查元件的結果

PK: 1 
list_questions.js:105 Deleted clicked 
jquery-1.11.2.min.js:4 GET http://127.0.0.1:8000/en/question/delete/ 
500 (INTERNAL SERVER ERROR)m.ajaxTransport.a.send @ jquery- 
1.11.2.min.js:4m.extend.ajax @ jquery- 
1.11.2.min.js:4delete_bank_question @ list_questions.js:106(anonymous 
function) @ list_questions.js:40m.event.dispatch @ jquery- 
1.11.2.min.js:3m.event.add.r.handle @ jquery-1.11.2.min.js:3 
list_questions.js:118 500: DoesNotExist at /en/question/delete/ 
Question matching query does not exist. 

Request Method: GET 
Request URL: http://127.0.0.1:8000/en/question/delete/ 

任何人都可以幫助我?

+1

的CSRF TOKEN您能否顯示您的urls.py? –

回答

0

我解決了這個問題。請求是GET,因爲我忘記了格式爲

0

你檢查元素結果表明,你是GET方法發送請求:

... 
jquery-1.11.2.min.js:4 GET http://127.0.0.1:8000/en/question/delete/ 
... 

首先檢查你的JS代碼。

+0

每件事情都很好,我在 之前使用了這段代碼,哪部分JS可能導致了這個問題? –