我已经看到了很多有关此问题的文章,但其中许多都至少有3年历史了,似乎没有什么可以解决我的问题。我希望有人能提供帮助。我创建了一个字符串数组,这些字符串是服务器上文件的路径。我想将该数组传递给PHP文件以取消链接指定的文件。问题是当我使用jQuery的ajax()函数将数组传递到PHP文件时,$ _POST变量为空,因此我无法对数据做任何事情。 URL很好,在此示例中,数组的长度为1。这是我的代码:
jQuery
$(".remove").click(function() {
var images = document.getElementsByTagName('img');
var images2remove = [];
$(images).each(function() {
if($(this).hasClass('highlight')) {
var path = $(this).attr('src');
images2remove.push(path);
}
})
$.ajax({
url: 'removeFiles.php',
type: 'post',
data: {images : images2remove},
contentType: false,
processData: false,
success: function(response) {
if(response != 0) {
console.log(response);
}
else {
alert('file not removed');
}
}
})
});
和我的PHP
$images = $_POST['images'];
var_dump($images); // returns array(0){}
我也尝试过:
$post = file_get_contents('php://input');
var_dump($post) // returns string(15) [object, Object]
我不太确定该怎么做。根据我看到的示例,我觉得我应该能够使用$ _POST变量访问此数组的内容。我在这里想念什么?一如既往的感谢!
查看此小提琴示例:
https://jsfiddle.net/f7kbL4m2/8/
为了适应异步调用,我不得不将data参数更改为json。
在您的PHP中
$data = json_decode(stripslashes($_POST['json']));
// here i would like use foreach:
foreach($data as $d){
echo $d;
}
也请查看此answer
从您的AJAX调用中删除内容类型和过程数据。
$.ajax({
url: 'removeFiles.php',
type: 'post',
data: {images : images2remove},
success: function(response) {
if(response != 0) {
console.log(response);
}
else {
alert('file not removed');
}
}
})
内容类型:指示要发送的数据类型
Process data:表示jquery应该序列化数据以将其发送到服务器。