我正在尝试将一些代码从 javascript 转换为 jquery。
Javascript代码:(我有这个代码here)
window.onload = function () {
document.getElementById('uploader').onsubmit = function () {
var formdata = new FormData(); //FormData object
var fileInput = document.getElementById('fileInput');
//Iterating through each files selected in fileInput
for (i = 0; i < fileInput.files.length; i++) {
//Appending each file to FormData object
formdata.append(fileInput.files[i].name, fileInput.files[i]);
}
//Creating an XMLHttpRequest and sending
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Home/Upload');
xhr.send(formdata);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
}
return false;
}
}
JQuery代码:(根据我的应用程序)
$('#AutoUploadFiles').click(function () {
var formdata = new FormData();
var fileInput = $("#AutomaticUploader");
for (var i = 0; i < fileInput.get(0).files.length; i++) {
formdata.append(fileInput.get(0).files[i].name, fileInput.get(0).files[i]);
}
$.ajax({
url: '/members/AutoUploadFile',
type: 'post',
data: formdata,
success: function () {
},
error: function () {
}
});
});
当我尝试执行上述 JQuery 代码时,我在 jquery.min.js 文件中收到“非法调用”错误。
我是 Web 编程新手,因此在转换为 JQuery 时可能犯了一些错误。 如果有人发现错误,请指导我。
最佳答案
问题是formdata
是一个对象,无法序列化为普通字符串
var formdata = new FormData();
并在您的代码中
type: 'post',
data: formdata, //<-- this is the problem
success: function () {
formdata
必须序列化为有效的 json 数据,否则它无法通过 $.ajax()
发送,这就是为什么你的jquery 版本将无法工作。请尝试其他 jquery uploader 脚本,因为 google 中有很多这样的脚本
关于javascript - 尝试将 javascript 转换为 jquery 时出现错误 'Illegal Invocation',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18914256/