[$ _ POST变量在AJAX请求后为空

问题描述 投票:0回答:1

我已经看到了很多有关此问题的文章,但其中许多都至少有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变量访问此数组的内容。我在这里想念什么?一如既往的感谢!

php jquery ajax post
1个回答
0
投票

查看此小提琴示例:

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应该序列化数据以将其发送到服务器。

签出:https://api.jquery.com/jquery.ajax/

© www.soinside.com 2019 - 2024. All rights reserved.