【发布时间】:2015-07-31 15:41:18
【问题描述】:
我正在创建一个简单的 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,然后导出图片的纯文件名。
接下来,我将文件名存储在一个名为“files”的数组中。
接下来,我想使用 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 和控制器中使用 POST 还是 GET 方法,都没有数据进入 CI 控制器功能)。
URI 是:console/read_pictures_table
【问题讨论】:
-
您介意发布此请求的路线,以防万一吗?
-
图片来源是否正确?还是那里存在图像?
-
你确定 ajax 发送数据吗? ajax 以哪种格式发送数据?
-
@IanGabes,我发布了 uri。不需要第三段。
console/read_pictures_table@bicho:是的,图像文件名很好。我可以提醒他们,他们在文件数组中被正确命名。 @user1048123:不,我不确定 ajax 是否正在发送数据。但现在,感谢@charlietfl,它已修复,并发送数据。谢谢大家。
标签: javascript jquery ajax codeigniter