我有一个php多维数组:
$array[0] = array('Jack','jack@mail.com');
$array[1] = array('one'=>'test1','two'=>'test2'); //unknown data limit
it could be 5 or 10 or 100 items consider the second array as purchased products.
我想从视图中将此数组$数组发送到控制器。我试过了:
$newArray = json_encode($array);
$.post('<?=base_url()?>controller/function/<?=$newArray ?>').done(function (res) {
alert(res);
});
但我收到安全错误,无法在网址中发送'['或'{'。当我在帖子中回显$ array时它将无法工作,因为结果将是:“数组”。
现在的问题是如何将这个多维数组从视图发送到codeigniter中的控制器?
答案 0 :(得分:1)
在您的视图中添加此代码
<script>
var myJsonString = JSON.stringify(yourArray);
var url="<?php echo base_url(); ?>/controller/show_json";
$.ajax({
type: "POST",
url: url,
dataType: 'json',
data: myJsonString,
success: function(data){
console.log(data);
}
});
</script>
在您的控制器上添加此功能
function show_json()
{
print_r($_POST);
}
答案 1 :(得分:1)
在视图中使用urlencode()(或javascript中的encodeURIComponent()):
$newArray = urlencode(json_encode($array));
或强>
$.post('<?=base_url()?>controller/function/'+encodeURIComponent('<?=$newArray ?>')).done(function (res) {
alert(res);
});
和
$json = urldecode($urlencodedjson);
在接收方。
答案 2 :(得分:0)
在视图中:
$newArray = json_encode($array)
$.post('<?=base_url()?>/controller/function',{t:<?=$newArray?>}).done(function (res) {
alert(res);
});
在控制器中:
$arr1 = $_POST['t'][0];
$arr1 = $_POST['t'][1];