2016-07-23 102 views
1

下面是HTML遺漏的類型錯誤:非法調用

<input id="fileUpload" multiple="multiple" type="file"/> 
<ul> 
<li><div id="image-holder"></div></li> 
<li><input type="submit" value="Next"></li> 
</ul> 

這裏是腳本

<script type="text/javascript"> 
    $('#submit').click(function() { 

    var files = $("[type='file']")[0].files; 

    console.log(files) 

    var data = { 
     'images[]' : files , 
     csrfmiddlewaretoken: '{{csrf_token}}' 
     } 

    $.ajax({ 
      type: "POST", 
      url : "{% url 'data_entry' %}", 
      data: data, 
      success: function(data) { 
      }, 
      error: function(response, error) { 
     } 
    }); 
}); 
</script> 

在提交時點擊我得到這個錯誤

Uncaught TypeError: Illegal invocation 

如何使用我發送圖片jQuery的Django視圖?

回答

1

你必須告訴Jquery不要處理文件。並且我發現瞭解決方法在數據中添加文件...希望這可以幫助...

Illegal invocation錯誤是因爲ajax不處理對象...這就是爲什麼我們在進入ajax之前序列化表單,現在你的情況下,你直接注入文件對象,然後錯誤。

var data = new FormData(); 
$.each(files, function(key, value) 
{ 
    data.append(key, value); 
}); 

而在阿賈克斯...

$.ajax({ 
    .... 
    processData: false, 
    .... 
+0

什麼CSRF?它會拋出403禁止錯誤,當我不處理數據 –

+0

我用'csrf_exempt'測試 –

+0

不是這是一個不包括csrf token.is的不良政策沒有其他方式? –

相關問題