我试图通过php脚本中的post检索数组的值。
var data = [];
table.rows({ selected: true }).every(function(index){
// Get and store row ID
data.push(this.data()[0]); //create a 1 dimensional array
});
//send data via ajax
$.ajax({
url: '/...../...',
type: 'POST',
data: {userid:data},
dataType: 'json',
到目前为止,在我的PHP脚本中,我无法解码数组。尝试了很多方法
$myArray = $_REQUEST['userid'];
foreach ($arr as $value) {
$userid= $value; //for now just trying to read single item
}
我试过print_r($myArray )
;这成功地将数组内容打印到屏幕上。
我正在尝试检索处理的值!请指出我正确的方向
答案 0 :(得分:1)
我认为PHP不会将您称为“数据”的数组识别为数组。你无法将表行中的数据转换为JavaScript对象中的值,将其编码为JSON字符串,然后将其发布到PHP脚本并在PHP端使用 json_decode($_POST["userid"])
将其转换为PHP数组。
答案 1 :(得分:1)
您发布到PHP的对象尤其不是jQuery对象。相反,它是一个JSON对象或更确切地说是一个JSON字符串。我想你不能像在PHP中读取常规数组一样读取该对象。
您可能想尝试使用json_decode()
解码字符串。使用true作为函数参数,它将返回一个php数组,如此stackoverflow回答中所建议的那样https://stackoverflow.com/a/6964549/6710876
$phpArray = json_decode($myArray, true);
json_decode()
的文档:http://php.net/manual/en/function.json-decode.php
答案 2 :(得分:0)
只需使用:
echo json_encode($myArray);
答案 3 :(得分:0)
您foreach
正在循环$arr
,这不存在。你的数组被设置为$ myArray,所以在你的for中使用它。
$myArray = $_REQUEST['userid'];
foreach ($myArray as $value) {
$userid= $value; //for now just trying to read single item
}
我相信你也应该能够在$_POST
答案 4 :(得分:0)
根据你的var_dump:
array(1) { ["userid"]=> string(21) "assssssss,camo,castor" }
如果我们假设“assssssss,camo,castor”是3个不同的用户名。 你应该用这个:
$userids=explode(",",$myArray->userid);
foreach($userids as $userid){
// use $userid
}