扫码关注官方订阅号
这是html代码
这是控制器代码
这里是model代码
我现在就是想做一个功能,就是自动验证这个用户名是否存在,但是现在就有一个问题,我一按提交就在另外一个页面出现这个信息,但是我想在这个输入框后面直接显示这个信息该怎么做?
这个后面,不用ajax,用thinkphp3.2.3的自动验证能完成我这个想法吗?求大神
HTML
<notempty name="error">{$error}</notempty> <form action="__SELF__"></form>
Controller
function verify() { $error = ''; if(IS_POST) { if($member->create()) { if($member->add()) { $this->success('注册成功'); }else{ $this->error('注册失败'); } }else{ $error = $member->getError(); } }else{ $this->assign('error',$error); $this->display(); } }
谢邀!
你不用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) <p class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </p> @endif
当第一次访问这个页面时,$errors肯定是没有值,因此不会有错误显示,如果再提交后并且有错误的情况下,laravel自动回退到这个页面后,这时候errors变量里就有值了。
当然以上是一次性把所有的错误打印到一个位置。
你可以根据需求把errors数组中的错误拆到想要的位置。
以上是一思路。不知think 中有没有对应实现。
建议用ajax提交表单,这样处理起来就方便多了。
不用ajax你怎么提交数据就是个问题
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
HTML
Controller
谢邀!
你不用ajax的话,你有去看TP封装的success和error函数么?过程中你会看到有一个提示页面,无论成功还是失败:ThinkPHP/Tpl/dispatch_jump.tpl, 你可以去看看,里面有一个变量$jumpUrl,你改变这个值就会跳到你指定的URL,而这个URL可以经过success和error函数传递过去,第二个参数加上你对应的URL就好:
那么就跳转到了你验证的页面,这时候你需要在你的控制器的验证方法verify()中去查询数据库中有无这个student,如果有把student的数据填到客户提交的表单,并且模版中显示成功,前面已经有提示失败的中转页面,这里不做处理,当然你想处理也是可以保存客户表单数据。
所以,还是用ajax吧,简单方便,给你看个例子,你把属性换一换就可以直接用了,前提是你明白这意思:
谢邀,我不太熟think,如果再不用ajax,我只能说个思路了。具体怎么应用到think中,你可以自己试试。
我说一下laravel是怎么实现的吧。
laravel在验证表单的时候,如果有不符合验证要求的字段会把用户重定向到先前的位置,所有的错误会被闪存到session。然后有个中间件负责把session里的错,统一赋值给$errors变量。这样在view端只需如下判断即可:
当第一次访问这个页面时,$errors肯定是没有值,因此不会有错误显示,如果再提交后并且有错误的情况下,laravel自动回退到这个页面后,这时候errors变量里就有值了。
当然以上是一次性把所有的错误打印到一个位置。
你可以根据需求把errors数组中的错误拆到想要的位置。
以上是一思路。不知think 中有没有对应实现。
建议用ajax提交表单,这样处理起来就方便多了。
不用ajax你怎么提交数据就是个问题