所以我有这个包含一些图像的数组:
var images = [image1, image2, image3]
图像采用文件形式。 如何使用AJAX将这些图像发送到php文件
以下代码不起作用:
$.ajax({
url: 'PHP/posts.php',
type: 'post',
data: {data: images},
success: function(data) {
alert(data);
location.reload();
}
});
我的HTML:
<div id="newPostFile">
<label for="newPostFiles"><i class="fa fa-file-text-o" id="newPostFileIcon" aria-hidden="true"></i></label>
<input type="file" name="newPostFiles" id="newPostFiles">
</div>
所以我基本上想要实现的是我逐个选择一个文件,它不断将文件添加到数组中,当我点击提交时,它会立即上传所有文件。 我不使用倍数的原因是因为我遇到的其他问题拖延了我
答案 0 :(得分:3)
您必须将文件作为formData
发送var images = [image1, image2, image3]
var data = new FormData();
images.forEach(function(image, i) {
data.append('image_' + i, image);
});
$.ajax({
url: 'PHP/posts.php',
type: 'post',
data: data,
contentType: false,
processData: false,
success: function(data) {
console.log(data);
location.reload();
}
});
但是当你正在重新加载页面时,为什么要使用ajax?
答案 1 :(得分:0)
确保PHP / posts.php函数包含与数据值相同的参数
答案 2 :(得分:0)
使用FormData
对象使用ajax发送文件。new FormData($('#your_form_id')[0])
自动在FormData
对象中附加所有表单输入,我们可以手动formData.append('file1',file1);
完成
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
let formData = new FormData($('#your_form_id')[0]);
$.ajax({
url: 'PHP/posts.php',
type: 'POST',
data: formData,
dataType:'json',
processData: false,
contentType: false,
success: function(response) {
console.log(response);
location.reload();
},
error: function() {
console.log('fail');
}
});
</script>
答案 3 :(得分:0)
您可以将JSON对象传递给PHP,这将是方便的解决方案
var data ={'image1':image1,'image2':image2};
您可以将此对象传递给php代码,然后解析它:
将对象作为字符串传递:
AJAX电话:
$.ajax({
type : 'POST',
url : 'PHP/posts.php',
data : {result:JSON.stringify(data)},
success : function(response) {
alert(response);
}
});
您可以将传递给result.php的数据处理为:
$data = $_POST["result"];
$data = json_decode("$data", true);
//just echo an item in the array
echo "image1 : ".$data["image1"];
另一种选择是在发送之前序列化数组,或者使用array.join
将其转换为逗号分隔的字符串,然后在posts.php上解析/拆分
array.join(",")