繁体   English   中英

使用AJAX将javascript数组传递给CodeIgniter控制器

[英]Using AJAX to pass javascript array to CodeIgniter controller

我正在创建一个简单的javascript数组变量,并且我想使用jQuery Ajax将该数组传递给CI控制器函数。

与这个问题上的许多问题不同,数组不是源自表单,也不是任何dom元素。 我希望这个问题与在SO上提出的其他问题不完全相同。 这是我的js代码:

function processImagesList(){
  var files = new Array();
  var i = 0;
  $("#thumbs li").each(function() {
     var source = $('img', this).attr('src');
     var f = source.split("/");
     var file = f[f.length - 1];
     files[i] = file;
     i++;    
  });
  if(files.length > 0){
    url = "/ajax/add_images_to_asset/";
    var formData = JSON.stringify( files );
    $.ajax({
        method: "POST",
        url: url,
        data : formData,
        dataType: "json"
    }).done(function( data ) {
        $.each(data,function(k,v){ alert(k + " = " + v); });
    }).fail(function(jqXHR, textStatus){
        alert( "Error: " + jqXHR.status + " , " + jqXHR.responseText );
    });
  }
}

基本上,这会读取li项目中img标签的src,然后解析src字符串以去除图像的相对url,然后得出图像的纯文件名。

接下来,我将文件名存储在一个名为“文件”的数组中。

接下来,我想使用Ajax将此数组传递给我的CI控制器。

我已经尝试过var formData = JSON.stringify( files ); 我试过了var formData = $( files ).serialize(); 我已经尝试过var formData = $( files ).serializeArray(); 我尝试发送作为方法:'POST'; 我试过发送作为方法:'GET';

这是我的控制器代码:

public function add_images_to_asset()
{
    $data = array();
    foreach($_POST as $k=>$v){
        //$data["$k"] = $v;
        echo $k . " = " . $v . "<br>";
    }
    header('Content-Type: application/json');
    echo json_encode($data);
}

显然,我试图在JSON标头之前回显POST(甚至GET)数据,但是没关系。 无论使用什么,似乎都没有任何数据(无论我使用Ajax&controller中的POST还是GET方法,都没有数据传递到CI控制器功能)。

URI是: console/read_pictures_table

您不会在数据中发送键/值对,而只是发送作为字符串化数组的值。 没有分配键,$ _ POST将为空

确实也不需要对数组进行字符串化。 jQuery将在内部转换为表单编码数组

尝试

$.ajax({
    method: "POST",
    url: url,
    data : {files: files},
    dataType: "json"
})......

然后在控制器中:

$files = $this->input->post('files');
// OR
$files = $_POST['files'];

暂无
暂无

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

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