提问者:小点点

在JSON响应中使用FilePond my hidden input value=“undefined”


所有的东西都能在后台正确上传,我可以从服务器上得到一个JSON响应,

{“success”:true,“filename”:“image1.png”,“assetId”:946}

但在使用>docs时,它不使用assetId填充隐藏字段

onload:(response)=>response.assetid

如果我删除onload,那么默认功能返回纯文本,然后我隐藏的输入将在值中显示整个JSON响应,如下所示

另外,在成功上传后,是否也要更改隐藏的输入名称?CMS需要保存/链接到的字段?恼人的是,我需要一个名称让Craft controller做上传到系统,另一个名称保存到条目中正确的字段。

FilePond.Parse(Document.Body);

FilePond.setOptions({
    allowDrop: true,
    allowReplace: true,
    instantUpload: true,
    server: {
        url: 'https://example.com/',
        process: {
            url: './actions/assets/upload',
            ondata: (formData) => {
                formData.append('folderId', '8');
                return formData;
            },
            onload: (response) => response.assetId,          
        }
    }  
});

共1个答案

匿名用户

我自己想出来的--我会离开这里,以防对其他人有帮助。

FilePond.parse(document.body);

    FilePond.setOptions({
        allowDrop: true,
        allowReplace: true,
        instantUpload: true,
        server: {
            url: 'https://example.com/',
            process: {
                url: './actions/assets/upload',
                ondata: (formData) => {
                    formData.append('folderId', '8');
                    formData.append('fieldId', '18');
                    formData.append('elementId', '1');
                    return formData;
                },
                onload: (response) => {
                    var json = (response);
                    var obj = JSON.parse(json);
                    var id = obj.assetId;
                    var input = document.createElement("input");
                    input.type = "hidden";
                    input.name = "fields[cover][]";
                    input.value = id;
                    document.getElementById("entry-form").appendChild(input);
                },  

            }
        }  
    });