从Ajax将数组数组传递给控制器

dio*_*jie 6 javascript php ajax jquery codeigniter

我有一些问题.首先,我想将我的数据存储到数组集合中.然后将数据传递给控制器​​提交.这是我的代码

Ajax.php

$("#submit").click(function() {
    var total = 3;
    var photos = new Array();

    for(var i = 0; i < total; i++)
    {
     photos[i] = $('#thumbnail'+i+'').children('img').attr('src');
     var collection = {
        'no' : i,
        'photo' : photos[i]
     };

    }

    $.ajax({ 
        type: "POST",
        url: "<?php echo base_url()?>create/submit",
        data: {collection : collection},
        cache: false,
        success: function(response)
        {
           console.log(response);
           alert('success');
           window.location = '<?php echo base_url()?>create/submit';

        }
    });

}); 
Run Code Online (Sandbox Code Playgroud)

[编辑]

调节器

function submit()

      $collection = $this->input->post('collection');

      print_r($collection);

      if(is_array($collection)) {
          foreach ($collection as $collect) {
           echo $collect['no'];
           echo $collect['photo'];
          }
       }
       else
       {
           echo 'collection is not array!';
       }
}
Run Code Online (Sandbox Code Playgroud)

结果

collection is not array!
Run Code Online (Sandbox Code Playgroud)

基于PeterKa解决方案,我在控制台的控制台中得到了这个

Array
(
[0] => Array
    (
        [no] => 0
        [photo] => https://scontent.cdninstagram.com/hphotos-xap1/t51.2885-15/s320x320/e15/11176494_1106697872689927_2104362222_n.jpg
    )

[1] => Array
    (
        [no] => 1
        [photo] => https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-15/s320x320/e15/11376044_838742186174876_410162115_n.jpg
    )

[2] => Array
    (
        [no] => 2
        [photo] => https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/s320x320/e15/11381470_878168042272606_1132736221_n.jpg
    )

)
Run Code Online (Sandbox Code Playgroud)

但是,我的控制器中的结果没有达到预期的效果.

Pet*_*rKA 6

collection变量是循环的本地变量,并不包含您迭代的所有数据.相反,尝试这样的事情,虽然你真的不需要一个对象来停止索引src- 一个简单的一维数组会做:

$("#submit").click(function() {
    var total = 3;
    var photos = new Array();
    for(var i = 0; i < total; i++)
    {
         var collection = {
            'no' : i,
            'photo' : $('#thumbnail'+i+'').children('img').attr('src')
        };
        photos.push( collection );
    }
    $.ajax({ 
        type: "POST",
        url: "<?php echo base_url()?>create/submit",
        data: {collection : photos},
        cache: false,
        success: function(response)
        {
            console.log(response);
            alert('success');
            window.location = '<?php echo base_url()?>create/submit';
        }
    });
}); 
Run Code Online (Sandbox Code Playgroud)

您发送的数据格式如下:

photos = [
    {
        "no": 1,
        "photo":"this is a link"
    }, 
    {
        "no": 2,
        "photo":"this is a link"
    },
    {
        "no": 3,
        "photo":"this is a link"
    }
]
Run Code Online (Sandbox Code Playgroud)