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处理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}