在向formData对象追加新值时遇到问题


having trouble appending new values to a formData object

我有困难附加额外的信息到formData对象,所以它可以在PHP中使用添加到SQL数据库。不幸的是,它依赖于AJAX,所以要进行测试,您需要在服务器或本地主机上运行它,但我已经包含了一个简单的PHP文件,需要称为'StackedTest.php'

我一直在遵循MDN上的例子,但花了很多时间寻找答案后,我一无所获。

MDN formData对象

谢谢你的帮助。

<html>
<head>
    <script type="text/javascript">
        var returned;
        var fd;
        function ajaxCall(sends){
            fd = new FormData();
            var images = document.getElementById('images');
            fd.append('file', images.files[0]);

            /**
             **
             ** This doesn't seem to be working, I am trying to append the value of the select box ** to the FILES array
             ** so I can use it in php to add to an SQL database.
             **
             **/
            fd.append('catagory', document.getElementById('cat').value);
                var ajax=new XMLHttpRequest();
                ajax.onreadystatechange=function(){
                if (ajax.readyState==4 && ajax.status==200){
                    document.getElementById("response").innerHTML = ajax.response;
                    fd = null;
                    }
                }
                ajax.open("POST","Stackedtest.php",true);
                ajax.send(fd);
            }

    </script>   
</head> 
<body>
<div id="content">
    <div>
        <form method="post" enctype="multipart/form-data" action="?">
            <select name="cat" id="cat"><br>
                <option value="opt1">option 1</option>
                <option value="opt2">option 2</option>
                <option value="opt3">option 3</option>
            </select><br>
            <input type="file" name="images[]" id="images" multiple /><br>  
            <button type="button" id="btn" onclick="ajaxCall()">Upload Files!</button>  
        </form>
        <p id="response">Response text here</p>
    </div>  
</div> <!-- END CONTENT -->
</body>
</html>
PHP脚本

<?php 
if(isset($_FILES['file'])){
    print_r($_FILES['file']);
    print_r($_FILES['catagory']);
}
?>

category是作为post数据发送的,所以使用post超全局变量$_POST

访问它
<?php 
if(isset($_FILES['file'])){
    print_r($_FILES['file']);
    print_r($_POST['catagory']);
}
?>

编辑:文件超全局也通过post发送,但只针对上传到PHP脚本的项目