codeigniter:通过ajax从视图向控制器发送多维数组

时间:2016-10-30 15:48:36

标签: php arrays ajax codeigniter multidimensional-array

我有一个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中的控制器?

3 个答案:

答案 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];