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