2015-11-13 61 views
0

這裏是我一起提交按鈕的代碼爲Ajax請求由相同的模板發送數據更新在Django模板中的數據,查看無需重新加載

<button type="submit" onclick="fn()" /> 
<script> 
function fn() 
{ 
$.ajax({ 
         url: '/', 
         type: 'POST', 
         data: { code: 'code'}, 
         success: function(response) { 
          result = JSON.parse(response); 
          if (result.error) { 

           alert(result.error_text); 
          } else { // Success 
            $('#output').show(); 
            document.getElementById('output-ans').innerHTML=result; 
            print 'yes'; 

           } 
          } 
         } 
        }); 
     } 
</script> 

在我的Django的看法,我寫

if request.is_ajax(): 
    do_something() 

但這似乎不起作用。請求類型是POST而不是ajax。數據被正確接收,但因爲這個原因,我無法修改早期的模板。

請建議一些方式來解決這個問題

回答

0

當通過AJAX使用POST你需要通過CSRF令牌。如果不這樣做,你會得到一個​​(禁止):

function fn() { 
    $.ajax({ 
     url: "/", 
     type: "POST", 
     data: { 
      "csrfmiddlewaretoken": "{{ csrf_token }}", 
      "code": "code" 
     }, 
     success: function(response) { 
      result = JSON.parse(response); 
      if (result.error) { 
       alert(result.error_text); 
      } else { // Success 
       $('#output').show(); 
       document.getElementById('output-ans').innerHTML=result; 
       print 'yes';  
      } 
     } 
    }); 
} 

那可能是你的代碼沒有達到這一部分的原因:

if request.is_ajax(): 
    do_something() 

檢查控制檯日誌

+0

在函數調用'fn()',即使我在開始時放置了一個alert(),也沒有任何反應。另外,我通過'POST'獲取所有數據,但我不知道這個原因,所以我認爲沒有403錯誤。 – proprius

+0

如果我刪除'request.is_ajax()',通過'POST'數據正在接收查看。 – proprius