我正在使用此脚本上传我的图片文件: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
你能帮助我吗?
答案 0 :(得分:155)
jQuery处理data
属性并将值转换为字符串。
Adding processData: false
到您的选项对象修复了错误,但我不确定它是否解决了这个问题。
答案 1 :(得分:8)
将processData: false
添加到$.ajax
选项可解决此问题。
答案 2 :(得分:7)
struct info : Decodable {
let list : [lists]
}
struct lists : Decodable{
let title : String?
let images : [String]?
}
实际上我将这两个命令添加到我的$ .ajax({})函数
答案 3 :(得分:3)
我的经历:
var text = $('#myInputField');
var myObj = {title: 'Some title', content: text};
$.post(myUrl, myObj, callback);
问题是我忘了将.val()添加到$(&#39;#myInputField&#39;)的末尾;这个动作让我浪费时间试图找出错误, 导致非法调用错误 ,因为$(&#39; #myInputField&#39;)处于不同的状态文件比该系统指出错误的代码。希望这个答案可以帮助同伴避免错误的时间。
答案 4 :(得分:-1)
在我的情况下,参数列表中的错误没有很好地形成。 因此,请确保参数形成良好。 对于例如正确的参数格式
data: {'reporter': reporter,'partner': partner,'product': product}