在我的html中,行是通过按一个按钮动态添加的。
<button id="add-row">Add New Row</button>
<div class="container">
<div class="row"><!-- Begins with 1 row -->
<input type="text" class="text"><input type="number" class="number">
</div>
<div class="row"><!-- IF user adds 1 row -->
<input type="text" class="text"><input type="number" class="number">
</div>
</div>
<button id="save">Save</button>
在jQuery中
//Add row
$('#add-row').on('click',function(){
$('.container').prepend('<div class="row">'+
'<input type="text" class="text"><input type="number" class="number">'+
'</div>');
});
//Save
$('#save').on('click',function(){
var text = $('.text').val();
var number = $('.number').val();
$.ajax({
type: "POST",
url: BASE_URL+'save/saverows',
dataType: 'html',
data: {text:text,number:number},
async: false,
success: function(data){
alert('Rows saved!');
}
});
});
在CI控制器中
public function saveRows(){
$data = array(
'text' => $this->input->post('text'),
'number' => $this->input->post('number')
);
$this->Row_model->saveAll($data);
}
在CI模型中
public function saveAll($data){
$this->db->insert('savehere', $data);
}
数据库表如下所示
ID TEXT NUMBER
1 a 11
2 b 22
3 c 33
4 d 44
我有什么只是为了保存一个单一的行只.我怎么能做到这一点,如果有超过1.我有一个想法,使用循环,但我不知道如何实现它在这里.我也读过CI的插入批量,但它有一个固定的行数要保存.
我的问题是在#save onclick
中。如何检索所有text
和number
的值,然后将其传递给jquery ajax
,然后传递给codeigniter controller
。
使用下面Ilan Hasanov的答案。数组的console.log是:
for (var i = 0; i < arrText.length; i++) {
console.log(arrText[i]+" "+arrNumber[i]);
}
text 100
text2 55
3条答案
按热度按时间fkaflof61#
我已经为你创建了一个函数,它将循环并分配你的输入。
在你的控制器里你做
我们之前在数据库结构中的jQuery中创建了数组,因此必须插入漂亮而简短的代码。
取决于您的数据库结构
或者如果在数据库中大写
ybzsozfc2#
取每个输入字段的名称和ID,这些字段应该是唯一的,通过序列化将表单发送到控制器
j5fpnvbx3#
在服务器端,我们需要生成像here这样的行数组
控制器:
内部
Row_model
我希望这会有帮助。我还没有测试过代码。所以如果你发现任何问题,请随时编辑。