Javascript Jquery选择图像,然后获取未定义的长度

Javascript Jquery选择图像,然后获取未定义的长度,javascript,jquery,Javascript,Jquery,我正在尝试使用jquery制作一个上传图像系统。但是我越来越 未捕获的TypeError:无法读取未定义的属性“length” 我得到的错误代码如下。当我单击imageInput按钮,然后在单击ok按钮后选择一个图像时,我无法从开发人员控制台读取未定义错误的属性'length'。我做错了什么?在这方面谁能帮我 HTML结构 <li id="box_devstud" class="tab active-chat" client="devstud" style="bottom: 0px; ri

我正在尝试使用jquery制作一个上传图像系统。但是我越来越

未捕获的TypeError:无法读取未定义的属性“length”


我得到的错误代码如下。当我单击imageInput按钮,然后在单击ok按钮后选择一个图像时,我无法从开发人员控制台读取未定义错误的属性'length'。我做错了什么?在这方面谁能帮我

HTML结构

<li id="box_devstud" class="tab active-chat" client="devstud" style="bottom: 0px; right: 230px;"></li>
<input id="imageInput" type="file" name="file" onchange="uploadimage('devstud');">
<input id="to_id" name="to_id" value="11" type="hidden">
<input id="to_uname" name="to_uname" value="devstud" type="hidden">
<input id="from_uname" name="from_uname" value="Beenny" type="hidden">
这里是我的javascript代码

function uploadphoto(thisuser) {

        var file_name=$("#box_"+thisuser+" #imageInput").val();
        var fileName = $("#box_"+thisuser+" #imageInput").val();
        var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1);

        var toid = $("#box_"+thisuser+" #to_id").val();
        var tun = $("#box_"+thisuser+" #to_uname").val();
        var fun = $("#box_"+thisuser+" #from_uname").val();

        var siteurl = 'requests/postprog.php?toid='+toid+'&tun='+tun+'&fun='+fun;
        var file_data=$("#box_"+thisuser+" #imageInput").prop("files")[0];
        var form_data=new FormData();
        form_data.append("file",file_data);

        $('#loadmsg_'+thisuser).show();      // Loader show

        $.ajax({
            type:"POST",
            url: siteurl,
            cache:false,
            contentType:false,
            processData:false,
            data:form_data,
            success:function(data){
                //alert(data);
                $.each(data.items, function(i,item){
                    if (item)   { // fix strange ie bug
                        chatboxtitle = item.chatboxtitle;
                        filename = item.filename;
                        path = item.path;

                        $('#loadmsg_'+chatboxtitle).hide();     // Loader hide

                        var message_content = "<a url='"+path+"' onclick='trigq(this)'><img src='"+filename+"' style='max-width:156px;min-height:100px;padding: 4px 0 4px 0; border-radius: 7px;cursor: pointer;'/></a>";
                        $("#box_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage direct-chat-msg right"><div class="direct-chat-info clearfix"><span class="direct-chat-name pull-right">'+item.sender+'</span></div><img class="direct-chat-img" src="storage/user_image/'+img+'" alt="message user image"><span class="direct-chat-text">'+message_content+'</span></div>');
                    }

                    setTimeout(scrollDown(chatboxtitle), 5000);
                });
            },
            error:function(){
                //Do something
            }
        });
    }
在fileName变量中,您可以这样调用DOM元素

function uploadphoto(thisuser) {
    var fileName = $("#box_"+thisuser+" #imageInput").val();
    // Rest of code ....
}
从给定的html代码片段中,您已将imageInput文件放在标记之外

请将您的输入文件放在li标记中,这样您现在就可以调用DOM元素了

<li id="box_devstud" class="tab active-chat" client="devstud" style="bottom: 0px; right: 230px;">
    <input id="imageInput" type="file" name="file" onchange="uploadimage('devstud');">
    <input id="to_id" name="to_id" value="11" type="hidden">
    <input id="to_uname" name="to_uname" value="devstud" type="hidden">
    <input id="from_uname" name="from_uname" value="Beenny" type="hidden">
</li>

无法从开发人员控制台读取未定义错误的属性“length”>>能否显示控制台窗口中的错误消息?@eeya我从控制台窗口添加了该消息。