post数据优化的问题
通过手机注册功能,需要用到获取验证码view部分代码
<?php echo form_open('register/register_user') ?>
<div class="row">
<div class="span4 offset4 well">
<?php if (isset($error) && $error): ?>
<div class="alert alert-warning">
<a class="close" data-dismiss="alert" href="#">×</a>
<?php echo $error_info;?>
</div>
<?php endif; ?>
<div class="form-group">
<input type="text" name="phone" class="form-control innerinputx" placeholder="请输入手机号码">
</div>
<div class="form-group">
<input type="password" name="password" class="form-control innerinputx" placeholder="请输入密码">
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6">
<input type="text" class="form-control innerinputx" name="checkcode" placeholder="请输入验证码">
</div>
<div class="col-sm-6">
<input type="submit" name="submit" value="验证码" class="btn btn-lg btn-default btn-block">
</div>
</div>
</div>
<div class="form-group">
<input type="submit" name="submit" value="注册" class="btn btn-lg btn-success btn-block">
</div>
</div>
</form>
controller 部分代码如下
function index() {
$this->show_view(false);
}
function show_view( $show_error = false ) {
$data['error'] = $show_error;
$data['error_info'] = "";
$this->load->helper('form');
$this->load->view('register_tpl',$data);
}
function register_user() {
$phone = $this->input->post('phone');
$password= $this->input->post('password');
$checkcode= $this->input->post('checkcode');
if($this->input->post('submit') == "验证码") {
$g = "/^1\d{9}$/";
if (preg_match($g, $phone)) {
$data['error'] = true;
$data['error_info'] = "已经发送";
$this->load->view('register_tpl',$data);
}
else {
$data['error'] = true;
$data['error_info'] = "手机号码不正确";
$this->load->view('register_tpl',$data);
}
}
else {
}
}
当我访问该页面 register 时,输入手机号码,然后点获取验证码,会访问 register/register_user,会重新载入view,导致之前输入框填写的内容都没有了,请问,这个该怎么优化,使用 ajax 吗?
是的,用 ajax Hex 发表于 2016-8-4 16:47
是的,用 ajax
我做了修改,但似乎有问题,整个页面还是依旧刷新, register_tpl 这个 view 中代码如下
<form action="" method="post" id="userForm">
<div class="row">
<div class="span4 offset4 well">
<?php if (isset($error) && $error): ?>
<div class="alert alert-warning">
<a class="close" data-dismiss="alert" href="#">×</a>
<?php echo $error_info;?>
</div>
<?php endif; ?>
<div class="form-group">
<input type="text" name="phone" class="form-control innerinputx" placeholder="请输入手机号码">
</div>
<div class="form-group">
<input type="password" name="password" class="form-control innerinputx" placeholder="请输入密码">
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6">
<input type="text" class="form-control innerinputx" name="checkcode" placeholder="请输入验证码">
</div>
<div class="col-sm-6">
<input type="submit" name="submit" value="验证码" class="btn btn-lg btn-default btn-block">
</div>
</div>
</div>
<div class="form-group">
<input type="submit" name="submit" value="注册" class="btn btn-lg btn-success btn-block">
</div>
</div>
</form>
<!-- 这里载入了 jquery->
<script>
function makeAjaxCall(){
$.ajax({
type: "post",
url: "register/register_user",
cache: false,
data: $('#userForm').serialize(),
success: function(json){
try{
console.log("json");
}catch(e) {
console.log("json");
}
},
error: function(){
console.log("error");
}
});
}
</script>
在register这个controller中代码如下
function index() {
$this->show_view(false);
}
function show_view( $show_error = false ) {
$data['error'] = $show_error;
$data['error_info'] = "";
$this->load->helper('form');
$this->load->view('register_tpl',$data);
}
function register_user() {
$phone = $this->input->post('phone');
$password= $this->input->post('password');
$checkcode= $this->input->post('checkcode');
if($this->input->post('submit') == "验证码") {
$g = "/^1\d{9}$/";
if (preg_match($g, $phone)) {
echo json_encode(array( 'status' => 1,
'msg' => '已发送'
));
}
else {
echo json_encode(array( 'status' => 0,
'msg' => '手机号码存在'
));
}
}
else {
echo json_encode(array( 'status' => 2,
'msg' => '出错啦'
));
}
}
当点击按钮后,出现的问题是,依旧会刷新跳转页面,请问这个那里错了?
你的 AJAX 提交表单写的不对,至少你贴出来的代码实现不了 AJAX 提交表单,因为你用了 submit 按钮,但是并没有阻止这个按钮的行为。 Hex 发表于 2016-8-5 11:33
你的 AJAX 提交表单写的不对,至少你贴出来的代码实现不了 AJAX 提交表单,因为你用了 submit 按钮,但是并 ...
多谢,懂了。 用ajax或者使用local storage
页:
[1]