<?php
$test_array[] = "dum";
$test_array[] = "dim";
$test_array[] = "dam";
$test_array[] = "dom";
$test_array[] = "düm";
?>
<script type="text/javascript">
$.ajax({ url: 'include.php',
type: 'POST',
data: { my_array : <?php echo json_encode($test_array); ?>
},
success: function(returnData)
alert(returnData);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
}
});
}
</script>
使用include.php看起来像这样:
echo count($_POST['my_array']);
echo json_decode($_POST['my_array']);
echo $_POST['my_array'];
问题是,没有数组会进入incude.php
回声给出“1düm
”,意思是$_POST-var
的长度为1(而原始数组为5),其条目仅为“düm”(这是原始的最后一个条目)数组)。
它看起来像这样:
count: 1
json_decode:
$_POST: düm
所以,它接缝不是完整的数组,而只是最后一个条目是POST ...
如何通过ajax-call将整个数组$test_array
传递给include.php
?
答案 0 :(得分:1)
试试这个,制作一个javascript Array
并将其传递给ajax函数
var myArr=["<?php print implode('","', $test_array)?>"];
$.ajax({ url: 'include.php',
type: 'POST',
data: { my_array : myArr
},
success: function(returnData)
alert(returnData);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
}
});
并且不再需要json_decode
中的include.php
答案 1 :(得分:1)
<?php
$test_array[] = "dum";
$test_array[] = "dim";
$test_array[] = "dam";
$test_array[] = "dom";
$test_array[] = "düm";
?>
<script type="text/javascript">
var stuff = <?php echo json_encode($test_array);?>;
var jsonString = JSON.stringify(stuff);
$.ajax({ url: 'include.php',
type: 'POST',
data: {data : jsonString},
success: function(returnData)
alert(returnData);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
}
});
}
</script>
答案 2 :(得分:0)
在ajax中,更改行:
my_array : <?php echo json_encode($test_array); ?>
到
my_array : JSON.stringify(<?php echo json_encode($test_array); ?>)
所以它看起来像这样:
<?php
$test_array[] = "dum";
$test_array[] = "dim";
$test_array[] = "dam";
$test_array[] = "dom";
$test_array[] = "düm";
?>
<script type="text/javascript">
$.ajax({ url: 'include.php',
type: 'POST',
data: { my_array : JSON.stringify(<?php echo json_encode($test_array); ?>)
},
success: function(returnData)
alert(returnData);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
}
});
}
</script>
在include.php
中使用
$my_array = json_decode($_POST['my_array'])
让阵列回来。
但是,这不适用于多维数组,例如,如果数组看起来像这样:
$test_barry[1][1] = "1a";
$test_barry[1][2] = "1b";
$test_barry[1][3] = "1c";
$test_barry[2][1] = "2a";
$test_barry[2][2] = "2b";
$test_barry[2][3] = "2c";
$test_barry[3][1] = "3a";
$test_barry[3][2] = "3b";
$test_barry[3][3] = "3c";
您需要使用
取回input.php
中的多维数组
$my_array = json_decode($_POST['my_array'],TRUE) // add TRUE