关于使用 Codeigniter 或其他可能的解决方案处理多维数组的建议?
Advice on handling multidimensional array with Codeigniter or possible other solution?
我有一个用户和复选框列表,我需要获取每个检查的 ID box:checked 以及主题字段和消息字段,然后传递给我的控制器。我能想到的唯一方法是获取每个 id 并复制主题和消息字段,然后将多维数组传递给我的控制器。我的数组如下所示:
[{id: "46", subject: "sample subject1", message: "test message1"}{id: "46", subject: "sample subject1", message: "test message1"}]
这似乎真的是多余的,因为我只需要用户 ID 列表和数组中消息和主题字段的 1 个副本,但不确定是否有更好的方法来执行此操作。是否可以通过 ajax 将两个不同的数组发送到我的 codeigniter 控制器?如果是这样,我如何在控制器中访问它们?
这是我收集 ID 和创建数组的代码示例。如果这是最好的方法,我仍然不确定如何在我的控制器中处理多维数组。通常我会使用 $this->input->post('key') 访问数组内容但是,那行不通:我想我需要先在控制器中循环遍历数组但不确定怎么做。
这是我的代码:
$(document).on('click', '.send_btn', function(e) {
//get ids of selected users
var subject = 'test subject';
var message = 'test message';
var data = [];
$(':checkbox[name="people_checked[]"]:checked').each (function () {
data.push({
id: this.id,
subject: subject,
message: message
})
});
$.ajax({
url: "/message/send_message",
method: "POST",
success: function (data) {
console.log('Success');
}
})
});
非常感谢任何帮助建议。
如果你想 DRY up 数组,将它转换为一个在根目录中有 subject
和 message
属性的对象。然后您可以提供 ids
属性 作为数组。它看起来像这样:
$(document).on('click', '.send_btn', function(e) {
var data = {
subject: 'test subject',
message: 'test message',
ids: $(':checkbox[name="people_checked[]"]:checked').map((i, el) => el.id).get()
};
$.ajax({
url: "/message/send_message",
method: "POST",
data: data, // note this was added, you didn't send a body in the original
success: function(data) {
console.log('Success');
}
})
});
输出将是:
{
subject: 'test subject',
message: 'test message',
ids: [ 123, 987 ]
}
您显然需要修改 /message/send_message
端点以使用该格式的请求正文。
我有一个用户和复选框列表,我需要获取每个检查的 ID box:checked 以及主题字段和消息字段,然后传递给我的控制器。我能想到的唯一方法是获取每个 id 并复制主题和消息字段,然后将多维数组传递给我的控制器。我的数组如下所示:
[{id: "46", subject: "sample subject1", message: "test message1"}{id: "46", subject: "sample subject1", message: "test message1"}]
这似乎真的是多余的,因为我只需要用户 ID 列表和数组中消息和主题字段的 1 个副本,但不确定是否有更好的方法来执行此操作。是否可以通过 ajax 将两个不同的数组发送到我的 codeigniter 控制器?如果是这样,我如何在控制器中访问它们?
这是我收集 ID 和创建数组的代码示例。如果这是最好的方法,我仍然不确定如何在我的控制器中处理多维数组。通常我会使用 $this->input->post('key') 访问数组内容但是,那行不通:我想我需要先在控制器中循环遍历数组但不确定怎么做。
这是我的代码:
$(document).on('click', '.send_btn', function(e) {
//get ids of selected users
var subject = 'test subject';
var message = 'test message';
var data = [];
$(':checkbox[name="people_checked[]"]:checked').each (function () {
data.push({
id: this.id,
subject: subject,
message: message
})
});
$.ajax({
url: "/message/send_message",
method: "POST",
success: function (data) {
console.log('Success');
}
})
});
非常感谢任何帮助建议。
如果你想 DRY up 数组,将它转换为一个在根目录中有 subject
和 message
属性的对象。然后您可以提供 ids
属性 作为数组。它看起来像这样:
$(document).on('click', '.send_btn', function(e) {
var data = {
subject: 'test subject',
message: 'test message',
ids: $(':checkbox[name="people_checked[]"]:checked').map((i, el) => el.id).get()
};
$.ajax({
url: "/message/send_message",
method: "POST",
data: data, // note this was added, you didn't send a body in the original
success: function(data) {
console.log('Success');
}
})
});
输出将是:
{
subject: 'test subject',
message: 'test message',
ids: [ 123, 987 ]
}
您显然需要修改 /message/send_message
端点以使用该格式的请求正文。