86

我正在使用此脚本上传我的图像文件: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
    });
  });
});

但是当我点击上传按钮时,JavaScript 控制台返回此错误:

Uncaught TypeError: Illegal invocation 

jQuery 错误

你能帮助我吗?

4

5 回答 5

175

jQuery 处理data属性并将值转换为字符串。

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

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

于 2012-10-06T01:57:22.637 回答
22

我有同样的问题

我通过使用两个选项来解决这个问题

contentType: false
processData: false

实际上我将这两个命令添加到我的 $.ajax({}) 函数中

于 2018-03-31T10:54:38.283 回答
8

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

于 2015-07-08T05:33:50.007 回答
3

我的经验:

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

问题是我忘记将 .val() 添加到 $('#myInputField'); 的末尾。此操作让我浪费时间试图找出问题所在,导致 Illegal Invocation Error,因为 $('#myInputField') 与系统指出的代码不正确位于不同的文件中。希望这个答案能帮助犯同样错误的人避免浪费时间。

于 2016-04-21T00:05:06.190 回答
-2

就我而言,参数列表中存在错误,格式不正确。因此,请确保参数格式正确。例如正确的参数格式

data: {'reporter': reporter,'partner': partner,'product': product}
于 2017-02-13T09:24:17.083 回答