使用AJAX将javascript数组传递给CodeIgniter控制器
我正在创建一个简单的javascript数组变量,并希望使用jQuery Ajax将该数组传递给CI控制器函数 与本主题中的许多问题不同,数组不是源于表单,也不是任何类型的dom元素。我希望这个问题与其他问题不一样。以下是我的js代码:使用AJAX将javascript数组传递给CodeIgniter控制器,javascript,jquery,ajax,codeigniter,Javascript,Jquery,Ajax,Codeigniter,我正在创建一个简单的javascript数组变量,并希望使用jQuery Ajax将该数组传递给CI控制器函数 与本主题中的许多问题不同,数组不是源于表单,也不是任何类型的dom元素。我希望这个问题与其他问题不一样。以下是我的js代码: function processImagesList(){ var files = new Array(); var i = 0; $("#thumbs li").each(function() { var source = $('img'
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,然后导出图像的纯文件名
接下来,我将文件名存储在一个名为“files”的数组中
接下来,我想使用Ajax将这个数组传递给我的CI控制器
我尝试了var formData=JSON.stringify(文件)代码>。
我尝试了var formData=$(文件).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);
}
public函数将图片添加到资源()
{
$data=array();
foreach($\发布为$k=>$v){
//$data[“$k”]=$v;
回声$k.“=”$v.“
”;
}
标题('Content-Type:application/json');
echo json_编码($data);
}
显然,我试图在JSON头之前回显POST(甚至获取)数据,但这没关系。无论我使用什么,似乎都没有任何数据(无论我在Ajax&controller中使用POST还是GET方法,都没有数据进入CI控制器函数)
URI是:console/read\u pictures\u table
您没有在数据中发送键/值对。。。仅字符串化数组的值。如果未分配密钥,$\u POST将为空
实际上也没有必要严格限制数组。jQuery将在内部转换为表单编码数组
试一试
然后在控制器中:
$files = $this->input->post('files');
// OR
$files = $_POST['files'];
为了以防万一,你介意发布这个请求的路线吗?图像的来源是正确的?或者存在图像?您确定ajax正在发送数据吗?ajax以哪种格式发送数据?@IanGabes,我发布了uri。不需要第三段console/read\u pictures\u table
@bicho:是的,图像文件名很好。我可以提醒他们,他们在文件数组中的名称是正确的@user1048123:不,我不确定ajax是否正在发送数据。但是现在,多亏了@charlietfl,它被修复了,并发送了数据。谢谢大家。谢谢@charlietfl。成功了。Ajax端的``data:{files:files}和data:files
,以及控制器端的foreach($\u POST
和foreach($\u POST['files']]
)之间的区别。我应该已经知道了这一点,但我没有想清楚。
$files = $this->input->post('files');
// OR
$files = $_POST['files'];