2016-10-30 9 views
0

を介してコントローラにビューから多次元配列を送信します。CodeIgniterの:私はPHPの多次元配列を持つアヤックス

$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 'の2番目の引数として –

+0

はうまくいきました。私はまだ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

あなたのコントローラ

function show_json() 
{ 
    print_r($_POST); 
} 
にこの機能を追加するには、ビューで

<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> 

をこのコードを追加

1

使用urlencode()(またはJavaScriptでencodeURIComponent())ビュー内:

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

OR:受信側

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

$json = urldecode($urlencodedjson);