首页 > 解决方案 > 尝试使用文本框上传多个文件,但在提交时,表单名称、日期文本没有价值

问题描述

此代码允许我正确保存文件并将名称保存到数据库,但文本框 (Name, date) 值是空的,尽管它具有输入值。

这是带有 JavaScript 的 PHP 和 HTML 文件。

索引.html

<html>
<head>
    <title>Load files</title>
    <script src="jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#savepr').submit(function (e) {
                e.preventDefault();
                var myfiles = document.getElementById("myfiles");
                var files = myfiles.files;
                var data = new FormData();

                for (i = 0; i < files.length; i++) {
                    data.append('file' + i, files[i]);
                }

                $.ajax({
                    url: 'php/saveorder.php',
                    type: 'POST',
                    contentType: false,
                    data: data,
                    processData: false,
                    cache: false
                }).done(function (msg) {
                    $('#savemodal').modal('hide');
                    setTimeout(function () {
                        swal({
                                title: "Nice!",
                                text: "Done Saving Request  !",
                                type: "success",
                                confirmButtonText: "OK"
                            },
                            function (isConfirm) {
                                if (isConfirm) {
                                    window.location.href = "index.php";
                                }
                            });
                    }, 1000);
                });
            });
        })
        ;
    </script>
</head>
<body>
    <form role="form" className='savepr' name="savepr" id="savepr" encType="multipart/form-data" method="post">
        <div id="upload">
            <div className="fileContainer">
                <input id="myfiles" type="file" name="myfiles[]" multiple="multiple"/>
                <input id="date" type="date" name="date"/>
                <input id="name" type="name" name="name"/>
            </div>
            <button className="btn btn-success btn-flat" id="submit" name="submit">Confirm</button>
        </div>
    </form>
    
    <div id="loadedfiles">
    </div>
</body>
</html>

这是 PHP 插入查询。

$queryadd=mysqli_query($link,"insert  into attachment
    (FILENAME,DATE,NAME) VALUES (
    '".$name."','".$DATE."','".$NAME."')");

标签: phpjqueryajax

解决方案


您永远不会将表单值添加到发送到服务器的数据中,只有文件:

var data = new FormData();
for (i = 0; i < files.length; i++) {
    data.append('file' + i, files[i]);
}

只需添加它的值:

data.append('date', $('#date').val());
data.append('name', $('#name').val());

推荐阅读