我在一个网站上上传了媒体。 当用户上传图像以输入[type =“ file” multiple]时,jquery(AJAX)向服务器发送请求。双重要求。 帮帮我我从jquery发出了ajax请求,但是
const mediaUpload = (t=false) => {
let u = $("input[type='file']")['0'].files;
$("container.showImageAJAX").parent().append("<container class=\"showImageAJAX1\"></container>");
$("container.showImageAJAX").remove();
$("container.showImageAJAX1").addClass('showImageAJAX').removeClass("showImageAJAX1");
let x = 0;
$(u).each((i,el)=>{
let data = new FormData();
data.append("section", "general");
data.append("action", "previewImg");
data.append("type", "mediaUpload");
data.append("imaj", u[i]);
$.ajax({
url: "/action/do/submit",
type: "POST",
dataType: "html",
contentType: !1,
processData: !1,
cache: !1,
data: data,
success: (e) => {
if (t===true) {
if (e!=="") {
$(".showImageAJAX").attr('datacount', i+1);
$(".showImageAJAX").attr('datasrc'+i, e);
}
x++;
if (x>=u.length) {
$.ajax({
url: '/action/do/submit',
type: 'POST',
dataType: 'html',
data: {
type: "mediaUpload",
parametr: "move",
object: $(".showImageAJAX")
},
success: (e) => {
if (e==="moved") {
// setTimeout(window.location.reload(), 3000);
alert("Şəkillər daxil edildi;");
}
}
});
}
} else {
$(".showImageAJAX").attr('src', e);
}
},
});
})
}
在这里,我必须js将所有图片1比1发送到服务器。在多个我不能为PHP的max_file_uploads错误。上传完所有图像后,第二个ajax发送请求将文件重命名为正确的文件夹。 这给我一个错误
Uncaught TypeError: Illegal invocation
at e (ajax.jquery.v11.min.js:5)
at Vb (ajax.jquery.v11.min.js:5)
at Vb (ajax.jquery.v11.min.js:5)
at Vb (ajax.jquery.v11.min.js:5)
at Vb (ajax.jquery.v11.min.js:5)
at Function.m.param (ajax.jquery.v11.min.js:5)
at Function.ajax (ajax.jquery.v11.min.js:5)
at Object.success (media:159)
at j (ajax.jquery.v11.min.js:2)
at Object.fireWith [as resolveWith] (ajax.jquery.v11.min.js:2)
请帮助。
这是我的HTML
<label title="Fayl seçin">
<input class="mediaUpload" type="file" onchange="mediaUpload(true);changeState(true)" multiple />
<span class="selected hiddened">{count} fayl seçildi</span>
<span class="select"><i class="fa fa-upload"></i> Fayl seçin</span>
</label>
和PHP
if ($_POST['type'] === "mediaUpload") {
if ($_POST['parametr']&&$_POST['parametr']==="move") {
print_r($_POST['object']);
} else {
$ty =explode("/", $_FILES['imaj']['type'])['1'];
if (!($ty!=="jpeg"&&$ty!=="png"&&$ty!=="gif"&&$ty!=="mp4"&&$ty!=="webm"&&$ty!=="wav")) {
$nm = "/c/".$md6->hex((string)time().mt_rand(000,999),64,"",16).".".$ty;
rename($_FILES['imaj']['tmp_name'], IMG.$nm);
echo $nm;
}
}
}
答案 0 :(得分:0)
问题是因为您试图将整个jQuery对象序列化到请求数据object: $(".showImageAJAX")
中。
不要那样做。仅从对象中提取相关数据并对其进行序列化