javascript - 从 Ajax 将数组数组传递给 Controller

标签 javascript php jquery ajax codeigniter

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

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

        }
    });

}); 

[编辑]

Controller

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!';
       }
}

结果

collection is not array!

基于 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
    )

)

但是,我的 Controller 中的结果并不像预期的那样。

最佳答案

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

您发送的数据采用以下形式:

photos = [
    {
        "no": 1,
        "photo":"this is a link"
    }, 
    {
        "no": 2,
        "photo":"this is a link"
    },
    {
        "no": 3,
        "photo":"this is a link"
    }
]

关于javascript - 从 Ajax 将数组数组传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152719/

相关文章:

javascript - 使用 JavaScript 函数添加动态 HTML 内容

javascript - 我如何在 .js 中的字符串中插入变量,来自 ruby​​ 示例

c# - 如何检查可变长度字符串以查看它们是否以数组中的任何内容开头

jquery - 在 <div> 元素中创建一个洞

javascript - 使用 KnockoutJS 从 API 加载字段后,将字段添加到 observableArray

javascript - Backbone.js 在获取返回值后呈现 View

javascript - 用于在 PHP 上剥离 javascript 的正则表达式

java - 如何使用php从Android将数据插入mysql数据库?

jquery - 如何使用 CSS(jQuery SVG 图像替换)更改 SVG 图像的颜色?

javascript - 将 map 经纬度加载到 html 内的脚本不起作用