未捕获到的TypeError:ajax中的非法调用

时间:2019-03-21 10:47:42

标签: javascript jquery

我在一个网站上上传了媒体。 当用户上传图像以输入[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&#231;ildi</span>
        <span class="select"><i class="fa fa-upload"></i>&nbsp;&nbsp;&nbsp;Fayl&nbsp;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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题是因为您试图将整个jQuery对象序列化到请求数据object: $(".showImageAJAX")中。

不要那样做。仅从对象中提取相关数据并对其进行序列化