这是html代码
这是控制器代码
这里是model代码
我现在就是想做一个功能,就是自动验证这个用户名是否存在,但是现在就有一个问题,我一按提交
就在另外一个页面出现这个信息,但是我想在这个输入框后面直接显示这个信息该怎么做?
这个后面,不用ajax,用thinkphp3.2.3的自动验证能完成我这个想法吗?求大神
这是html代码
这是控制器代码
这里是model代码
我现在就是想做一个功能,就是自动验证这个用户名是否存在,但是现在就有一个问题,我一按提交
就在另外一个页面出现这个信息,但是我想在这个输入框后面直接显示这个信息该怎么做?
这个后面,不用ajax,用thinkphp3.2.3的自动验证能完成我这个想法吗?求大神
谢邀!
你不用ajax的话,你有去看TP封装的success和error函数么?过程中你会看到有一个提示页面,无论成功还是失败:ThinkPHP/Tpl/dispatch_jump.tpl, 你可以去看看,里面有一个变量$jumpUrl,你改变这个值就会跳到你指定的URL,而这个URL可以经过success和error函数传递过去,第二个参数加上你对应的URL就好:
/**
* 操作成功跳转的快捷方法
* @access protected
* @param string $message 提示信息
* @param string $jumpUrl 页面跳转地址
* @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
* @return void
*/
protected function success($message='',$jumpUrl='',$ajax=false) {
$this->dispatchJump($message,1,$jumpUrl,$ajax);
}
那么就跳转到了你验证的页面,这时候你需要在你的控制器的验证方法verify()中去查询数据库中有无这个student,如果有把student的数据填到客户提交的表单,并且模版中显示成功,前面已经有提示失败的中转页面,这里不做处理,当然你想处理也是可以保存客户表单数据。
所以,还是用ajax吧,简单方便,给你看个例子,你把属性换一换就可以直接用了,前提是你明白这意思:
$(".submit-btn").click(function(e) {
$.ajax({
type:"POST",
url: $('#data-addAccount').attr("action"),
dataType: "json",
data: $('#data-addAccount').serialize(),
success: function(data) {
if(data.status == 1) {
updateAlert(data.msg, 'alert-success')
setTimeout("window.location.reload()",2000)
}else {
$('.data_email').html(data.msg);
$(".data_email").css('color','#f00');
}
}
});
});
谢邀,我不太熟think,如果再不用ajax,我只能说个思路了。具体怎么应用到think中,你可以自己试试。
我说一下laravel是怎么实现的吧。
laravel在验证表单的时候,如果有不符合验证要求的字段会把用户重定向到先前的位置,所有的错误会被闪存到session。然后有个中间件负责把session里的错,统一赋值给$errors变量。这样在view端只需如下判断即可:
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
当第一次访问这个页面时,$errors肯定是没有值,因此不会有错误显示,如果再提交后并且有错误的情况下,laravel自动回退到这个页面后,这时候errors变量里就有值了。
当然以上是一次性把所有的错误打印到一个位置。
你可以根据需求把errors数组中的错误拆到想要的位置。
以上是一思路。不知think 中有没有对应实现。
2 回答2.5k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答556 阅读✓ 已解决
1 回答858 阅读✓ 已解决
951 阅读
2 回答592 阅读
1 回答697 阅读
HTML
Controller