jQuery click中未定义文件值

u91tlkcl  于 2023-08-04  发布在  jQuery
关注(0)|答案(2)|浏览(114)

在我的项目中,所有的表单都是彼此相似的,所以我想写一个点击功能来运行所有。
下面的代码除了文件之外都可以正常工作。文件值输出为undefined。如何将文件附加到此表单数据?
下面是我的click函数:

$("#save_form").click(
    function(event){
        event.preventDefault();

        var formData = {};

        $('.form-value').each(function() {
            var id = $(this).attr('id');
            var value;
            if ($(this).is('select')) {
                value = $(this).find('option:selected').val();
            } else if ($(this).is(':file')) {
                value = $(this)[0].files[0].value; // Returns undefined.
            } else {
                value = $(this).val();
            }
            formData[id] = value;
        });

        console.log(formData);

字符串
当我使用无值时:

value = $(this)[0].files[0]


我得到:

Uncaught TypeError: Illegal invocation

yshpjwxd

yshpjwxd1#

使用文件本身。文件没有value属性。

value = this.files[0];

字符串

ippsafx7

ippsafx72#

在大卫和他的帮助下,我解决了这个问题。

  • 我发送的是文件,不是值。
value = $(this)[0].files[0];

字符串

  • 然后,我向 AJAX 添加了两行(processData和contentType为false)
method: 'POST',
data: formData,
processData: false, 
contentType: false,

相关问题