2016-10-30 88 views
0

從視圖發送一個多維數組控制器我有一個PHP多維數組:笨:通過AJAX

$array[0] = array('Jack','[email protected]'); 
$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); 
    }); 

但是我得到一個安全錯誤,無法在URL中發送'['或'{'。當我只是在帖子中回顯$ array時,它不會工作,因爲結果將是:「Array」。

所以現在的問題是如何將這個多維數組從視圖發送到控制器codeigniter?

+1

作爲'$ .post'的第二個參數 –

+0

Works很好,謝謝。我仍然不熟悉codeigniter,並沒有json_encode嘗試這種方式,但沒有奏效。你可以添加它作爲答案 $ .post('<?= base_url()?>/controller/function',{t:}) –

+0

你可以回答你自己的問題) –

回答

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]; 
2

在視圖中添加此代碼

<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

使用urlencode()(或encodeURIComponent()在javascript)在視圖:

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

OR:

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

$json = urldecode($urlencodedjson); 
在接收器側