【发布时间】:2020-09-08 08:53:08
【问题描述】:
我在将 POST 参数从 javascript 发送到 php 页面时遇到问题。所有脚本都可以正常工作,但我需要 POST 参数以进行进一步操作。在 php $_POST 数组中总是显示为空白。我究竟做错了什么?到目前为止,这是我的代码:
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div class="container" style="width:700px;">
<label>Select Image</label>
<input type="file" name="file" id="file" />
<br /><br />
<span id="uploaded_image"></span>
</div>
Javascript:
$(document).ready(function(){
$(document).on('change', '#file', function(){
var name = document.getElementById("file").files[0].name;
var form_data = new FormData();
var ext = name.split('.').pop().toLowerCase();
if(jQuery.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
alert("Invalid Image File");
}
var oFReader = new FileReader();
oFReader.readAsDataURL(document.getElementById("file").files[0]);
var f = document.getElementById("file").files[0];
var fsize = f.size||f.fileSize;
if(fsize > 2000000) {
alert("Image File Size is very big");
}
else {
form_data.append("file", f);
$.ajax({
url:"upload.php",
method:"POST",
data: form_data,
contentType: false,
cache: false,
processData: false,
beforeSend:function(){
$('#uploaded_image').html("<label class='text-success'>Image Uploading...</label>");
},
success:function(data) {
$('#uploaded_image').html(data);
}
});
}
});
});
和 PHP:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['file'])) {
$errors = [];
$extensions = ['jpg', 'jpeg', 'png', 'gif', 'pdf'];
echo '$_FILES array: ';
print_r(array_values($_FILES));
echo '<br>';
echo '$_POST array: ';
print_r(array_values($_POST));
echo '<br>';
}
// rest of code
}
【问题讨论】:
-
我修正了你的标题。 Java 和 Javascript 之间有很大的不同。
-
您所做的只是发送一个文件。它们不会出现在
$_POST-array 中。它们位于$_FILES数组中(您也可以转储该数组)。里面有什么? -
感谢您的修复。我在编码方面很新,所以我必须学习很多东西。贝娄是关于我的问题的更多细节。