未捕获的TypeError:无法读取属性'文件'元素的null

时间:2017-11-26 13:48:16

标签: javascript jquery html form-data

我正在创建一个可以聊聊它的小网站。目前,人们只能发短信,我想打开文件发送者以及发送图像,视频,gif(s)。

我一路上遇到了一些问题,但到目前为止还没有其他人的支持。但是,我现在非常需要它。

通过使用FormData,Ajax和jQuery,我能够将客户端发送到PHP服务器的实时图像。我面临的问题是:

  

未捕获的TypeError:无法读取属性'文件'为null

尝试将文件追加到formData时。看看:

function opencraze() {
    $(".browse_send_file").change(function () {
        var chat_id = "123";
        var formData = new FormData();

        formData.append("chat_id", chat_id);

        var name = document.getElementById('#browse_' + chat_id);
        var filemsg = name.files[0];
        formData.append("userfile", filemsg);
    });
}

HTML:

<div class="chat_wcom" style="width: 25%;">
    <label for="browse_123" class="material-icons"></label>
    <input type="file" class="browse_send_file" id="browse_123" name="browse_send_file" style="display: none">
    <input maxlength="140" type="text" id="input_123" class="comin" placeholder="My message..." name="sendmsg" onkeypress="g(event,123)" autocapitalize="off" autocorrect="off" style="width: auto;">
    <input class="hidden_index" type="text" value="123" name="chat_index">
</div>

在用户点击div之前,会发生什么事情,生成上面的HTML,一旦生成,它就会调用opencraze()函数。现在,如果按下聊天的标签,则选择该文件并激活.change() jQuery功能。错误在以下行:

var filemsg = name.files[0];

任何帮助将不胜感激。 谢谢你的时间。

1 个答案:

答案 0 :(得分:2)

原生javascript document.getElementById()需要&#39; id&#39;作为没有jQuery选择器#的字符串 所以删除#:

var name = document.getElementById('browse_'+chat_id);

或使用jQuery selector方法:

var name=$('#browse_'+chat_id);