【发布时间】:2020-05-17 21:24:00
【问题描述】:
我看过很多关于这个问题的帖子,但其中很多都至少有 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 变量访问该数组的内容。我在这里想念什么?一如既往的感谢!
【问题讨论】:
-
你在哪里看到
$_POST是空的?是来自console.log(response)还是其他地方?另外,您的.removeHTML 元素是什么?您并没有阻止默认事件操作,因此如果它是链接或提交按钮,您的页面可能正在导航 -
为什么会有
contentType: false和processData: false?将这些设置为false将是您的问题的原因 -
@phil .remove 只是一个没有链接的类型按钮。
-
contentType: false 是问题所在。简单的修复。谢谢你。我正在从我看到的一篇文章中复制代码,但从未真正考虑过。