![](/img/trans.png)
[英]Using ajax to pass javascript array to a controller in codeigniter to use with a function
[英]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.