Jquery和HTML FormData返回“Uncaught TypeError:非法调用”

我正在使用这个脚本上传我的图像文件: http : //jsfiddle.net/eHmSr/

$('.uploader input:file').on('change', function() { $this = $(this); $('.alert').remove(); $.each($this[0].files, function(key, file) { $('.files').append('<li>' + file.name + '</li>'); data = new FormData(); data.append(file.name, file); $.ajax({ url: $('.uploader').attr('action'), type: 'POST', dataType: 'json', data: data }); }); }); 

但是,当我点击上传button,JavaScript控制台返回这个错误:

 Uncaught TypeError: Illegal invocation 

jQuery错误

你可以帮我吗?

jQuery处理data属性并将值转换为string。

processData: false添加到您的选项对象可以修复错误,但我不确定它是否解决了问题。

演示: http : //jsfiddle.net/eHmSr/1/

$.ajax选项添加processData: false将解决此问题。

我的经验:

  var text = $('#myInputField'); var myObj = {title: 'Some title', content: text}; $.post(myUrl, myObj, callback); 

问题是我忘了将.val()添加到$('#myInputField')的末尾。 这个动作让我浪费时间来弄清楚什么是错误的, 导致了非法的调用错误 ,因为$('#myInputField')在不同的文件中,而不是系统指出的不正确的代码。 希望这个答案可以帮助同伴避免失去时间。

在我的情况下,参数列表中的错误是不正确的。 所以确保参数是正确的。 例如正确的参数格式

 data: {'reporter': reporter,'partner': partner,'product': product}