繁体   English   中英

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

[英]codeigniter: send a multidimensional array from view to controller via ajax

我有一个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.

我想将此数组$ array从视图发送到控制器。 我试过了:

$newArray = json_encode($array);
$.post('<?=base_url()?>controller/function/<?=$newArray ?>').done(function (res) {
        alert(res);
    });

但是我收到一个安全错误,无法在URL中发送“ [”或“ {”。 当我只在帖子中回显$ array时,它将不起作用,因为结果将是:“ Array”。

因此,现在的问题是如何在Codeigniter中将多维数组从视图发送到控制器?

在您的视图中添加此代码

<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);
}

在视图中使用urlencode() (或javascript中的encodeURIComponent() ):

$newArray = urlencode(json_encode($array));

要么:

$.post('<?=base_url()?>controller/function/'+encodeURIComponent('<?=$newArray ?>')).done(function (res) {
        alert(res);
    });

$json = urldecode($urlencodedjson);

在接收方。

在视图中:

$newArray = json_encode($array)
$.post('<?=base_url()?>/controller/function',{t:<?=$newArray?>}).done(function (res) {
     alert(res);
});

在控制器中:

$arr1 = $_POST['t'][0];
$arr1 = $_POST['t'][1];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM