将jquery ajax数组传递给php不起作用

将jquery ajax数组传递给php不起作用,php,jquery,arrays,ajax,Php,Jquery,Arrays,Ajax,我知道这一定是复制品。但我一辈子都搞不清楚哪里出了问题。我尝试过直接传递数组,使用json编码/解码,在jquery中加入数组,并将其作为字符串传递并分解……但我就是无法让我的php运行传递数据。救命啊 如果非要我猜的话,引号里有些东西,但我要把它删掉。如果我注释掉检索数组的行,并取消注释设置列表并分解它的两行,脚本可以自己调用并按预期工作。但以目前的形式,它什么也不做。我肯定我错过了一些简单的东西,因为我对这两种语言都了解不够 编辑:更新: 我能够使用: var_dump($_POST); d

我知道这一定是复制品。但我一辈子都搞不清楚哪里出了问题。我尝试过直接传递数组,使用json编码/解码,在jquery中加入数组,并将其作为字符串传递并分解……但我就是无法让我的php运行传递数据。救命啊

如果非要我猜的话,引号里有些东西,但我要把它删掉。如果我注释掉检索数组的行,并取消注释设置列表并分解它的两行,脚本可以自己调用并按预期工作。但以目前的形式,它什么也不做。我肯定我错过了一些简单的东西,因为我对这两种语言都了解不够

编辑:更新: 我能够使用:

var_dump($_POST);
die();
在网络控制台中获取以下响应。这是否说明了在传递数组时脚本无法运行的原因

array(1) {
  ["download_listArray"]=>
  array(3) {
    [0]=>
    string(6) "7391-1"
    [1]=>
    string(6) "7392-2"
    [2]=>
    string(6) "7393-3"
  }
}
为了完整起见,在使用JSON.stringify方法时,以下是相同的响应:

array(1) {
  ["download_listArray"]=>
  string(26) "["7391-1","7392-2","7393-3"]"
}
console.log(download_list);   \\ gives: ["7391-1", "7392-2", "7393-3"]

 $.ajax({
            type: "POST",
            url: "zip_download.php",
            data: {download_listArray:download_list},

            success: function(){
            alert("OK");
        }
        });
<?php
$sample_name_list = $_POST['download_listArray'];

//$sample_name_list = "7391-1,7392-2,7393-3";    #If I use these two lines, the script runs as expected
//$sample_name_list = explode(",", $sample_name_list);

foreach ($sample_name_list as $i => $sample_name){

   //do stuff
}
Jquery:

array(1) {
  ["download_listArray"]=>
  string(26) "["7391-1","7392-2","7393-3"]"
}
console.log(download_list);   \\ gives: ["7391-1", "7392-2", "7393-3"]

 $.ajax({
            type: "POST",
            url: "zip_download.php",
            data: {download_listArray:download_list},

            success: function(){
            alert("OK");
        }
        });
<?php
$sample_name_list = $_POST['download_listArray'];

//$sample_name_list = "7391-1,7392-2,7393-3";    #If I use these two lines, the script runs as expected
//$sample_name_list = explode(",", $sample_name_list);

foreach ($sample_name_list as $i => $sample_name){

   //do stuff
}
PHP:

array(1) {
  ["download_listArray"]=>
  string(26) "["7391-1","7392-2","7393-3"]"
}
console.log(download_list);   \\ gives: ["7391-1", "7392-2", "7393-3"]

 $.ajax({
            type: "POST",
            url: "zip_download.php",
            data: {download_listArray:download_list},

            success: function(){
            alert("OK");
        }
        });
<?php
$sample_name_list = $_POST['download_listArray'];

//$sample_name_list = "7391-1,7392-2,7393-3";    #If I use these two lines, the script runs as expected
//$sample_name_list = explode(",", $sample_name_list);

foreach ($sample_name_list as $i => $sample_name){

   //do stuff
}

将数组转换为Json,并尝试与以下代码块相同的方法。希望对你有用

Jquery:

var download_list= JSON.stringify(download_list);
$.ajax({
    type: "POST",
    url: "zip_download.php",
    data: {download_listArray:download_list},
    cache: false,
    success: function(){
        alert("OK");
    }
});

PHP:


响应您的更新:

“为了完整起见,在使用JSON.stringify方法时,以下是相同的响应:

请根据您给定的数据查找我的更新代码以解决您的问题

<?php

$_POST['download_listArray'] = '["7391-1","7392-2","7393-3"]';

//var_dump($_POST['download_listArray']); die();

$sample_name_list = json_decode(stripslashes($_POST['download_listArray']));

foreach ($sample_name_list as $i => $sample_name){

   echo $sample_name.'<br>';
}
PHP

<?php

$_POST['download_listArray'] = '["7391-1","7392-2","7393-3"]';

//var_dump($_POST['download_listArray']); die();

$sample_name_list = json_decode(stripslashes($_POST['download_listArray']));

foreach ($sample_name_list as $i => $sample_name){

   echo $sample_name.'<br>';
}

它应该可以工作。
var\u dump($\u POST);
显示了什么?我认为您的'url:'zip\u download.php','不正确,请验证文件path@Barmar我用传单地图中的multiselect触发了这个。所以任何类型的转储、打印或回音都不会出现。我也不知道如何让它们出现。(如果我直接导航到php,我可以在窗口中看到弹出的消息,但这对切换的故障排除没有任何好处。)@AkhilAravind这是一个用于共享的通用净化链接。实际的链接是正确的,当我打开jquery文件时,我可以通过编辑器导航到它。@Barmar-我通过一些调试更新了这个问题。为了查看网络控制台中返回的内容,我先执行了var_dump,然后执行了die。我尝试了几种变体我试着在数组上使用Json.strigify以及一个连接字符串。我试着用PHP阅读Json,就像上面所说的那样,有无stripslashes,有无foreach循环中的键。我还用你建议的调试输出更新了这个问题。