我遇到的问题现在真的毁了我的生活。我正在尝试通过Ajax将值传递给codeigniter控制器。 我已经阅读了很多关于它的事情,但我找不到为什么这不起作用。
所以我在bootstrap模式窗口中创建了一个表单来添加一个新成员。值包括:名字,姓氏,电子邮件和passowrd。 我正在使用jQuery验证来验证信息,然后我想将值传递给控制器。
$('#addMember form').validate({ // initialize plugin
rules: {
lname: {
required: true,
minlength: 2
},
name: {
required: true,
minlength: 2
},
mail: {
required: true,
email: true
},
password: {
required: true
},
repassword: {
required: true,
equalTo: "#password"
}
},
highlight: function (element) {
$(element).closest('.input-group')
.removeClass('success').addClass('error');
},
success: function (element) {
element.addClass('valid').closest('.input-group')
.removeClass('error').addClass('success');
},
submitHandler: function (form) {
// form validates so do the ajax
var dataString = $(form).serialize();
$.ajax({
type: $(form).attr('method'),
url: $(form).attr('action'),
data: dataString,
success: function (data, status) {
// ajax done
// do whatever & close the modal
alert(status);
$('.modal').modal('hide');
}
});
return false; // ajax used, block the normal submit
}
});
<div id="addMember" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<form id="addMemberForm" method="POST" action="<?php echo base_url('adminMembers/process_add_member');?>">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"></span></button>
<h4 class="modal-title">Add a new member</h4>
</div>
<div class="modal-body">
<div class="input-group">
<span class="input-group-addon" id="basic-addon1">Last Name</span>
<input name="lname" type="text" class="form-control" placeholder="" aria-describedby="basic-addon1">
</div>
<div class="input-group">
<span class="input-group-addon" id="basic-addon1">First name</span>
<input name="name" type="text" class="form-control" placeholder="" aria-describedby="basic-addon1">
</div>
<div class="input-group">
<span class="input-group-addon" id="basic-addon1">Email</span>
<input name="mail" type="email" class="form-control" placeholder="" aria-describedby="basic-addon1">
</div>
<div class="input-group">
<span class="input-group-addon" id="basic-addon1">Password</span>
<input id="password" name="password" type="password" class="form-control" placeholder="" aria-describedby="basic-addon1">
</div>
<div class="input-group">
<span class="input-group-addon" id="basic-addon1">Password again</span>
<input name="repassword" type="password" class="form-control" placeholder="" aria-describedby="basic-addon1">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary" value="add">Add</button>
</div>
</form>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
我在警告窗口中收到了成功消息,因此ajax部分正在运行。
然后我不知道如何使用我的控制器中的值。
如果我尝试打印$this->input->post('lname')
,我会得到一个空值。
有什么想法吗?
编辑:可能有用:
</div><!-- /.modal -->
。我的控制器中的add_Member函数如下所示:
public function process_add_member()
{
$this->membersManager->add_member();
}
最后是模特:
public function add_member()
{
$name = $this->input->post('name');
$lname = $this->input->post('lname');
$email = $this->input->post('mail');
$password = $this->input->post('password');
return $this->db->set(array('name' => $name,
'lname' => $lname,
'login' => $email,
'email' => $email,
'password' => $password))->insert($this->table);
}
正如我所说,我试图将$this->input->post()
替换为$_POST[]
,但仍然无效。
要完成,我想要我没有使用AJAX传递值而尝试相同,并且它正在工作。我需要使用AJAX,因为我希望表单位于bootstrap模式窗口中。
事情是,似乎控制器中的函数process_add_Member()
未被调用。我可以做任何事情而且不会发生。
没人? :(我真的不明白什么在这里不起作用。
HELP! 有人可以帮我吗?
答案 0 :(得分:0)
由于您使用表单序列化方法传递数据,因此使用material.opacity = 0.5;
直接检索帖子值$this->input->post()
。
希望这能解决你的问题。
答案 1 :(得分:0)
您应该在视图中使用form_open()
辅助函数,以便将CSRF标记包含为隐藏字段。
总的来说:你应该尽可能使用辅助函数和类。如果您不使用提供的函数,则无法使用框架。