thinkphp3.2.3+bui框架使用store做表单数据绑定并使用ajax向后台发送表单数据
前言:学习使用bui框架,还未学习bui的ajax接口,故先使用jquery的ajax搞一波。
首先是html代码
1 <ul class="bui-list"> 2 <li class="bui-btn bui-box clearactive"> 3 <span class="bui-label"> 4 手机号: 5 </span> 6 <div class="span1"> 7 <div class="bui-input"> 8 <input b-model="page.user.userpnumber" class="bui-input" id="userpnumber" placeholder="请输入手机号" type="number"/> 9 </div><!--b-model="page.user.userpnumber"是bui数据驱动的双向绑定,input应该使用b-model, 10 page.user.username绑定的是page作用域 11 (即bui.store({})中的scope,下的data数据对象的user对象的userpnumber属性)--> 12 </div> 13 </li> 14 <li class="bui-btn bui-box clearactive"> 15 <span class="bui-label"> 16 用户名: 17 </span> 18 <div class="span1"> 19 <div class="bui-input"> 20 <input b-model="page.user.username" class="bui-input" id="username" placeholder="请输入用户名" type="text"/> 21 </div><!--b-model="page.user.username"是bui数据驱动的双向绑定,input应该使用b-model, 22 page.user.username绑定的是page作用域 23 (即bui.store({})中的scope,下的data数据对象的user对象的username属性)--> 24 </div> 25 </li> 26 <li class="bui-btn bui-box clearactive"> 27 <span class="bui-label"> 28 密码: 29 </span> 30 <div class="span1"> 31 <div class="bui-input"> 32 <input b-model="page.user.userpwd" class="bui-input" id="userpwd" placeholder="请输入密码" type="password"/> 33 </div><!--b-model="page.user.userpwd"是bui数据驱动的双向绑定,input应该使用b-model, 34 page.user.username绑定的是page作用域 35 (即bui.store({})中的scope,下的data数据对象的user对象的userpwd属性)--> 36 </div> 37 </li> 38 <li class="bui-btn bui-box clearactive"> 39 <span class="bui-label"> 40 确认密码: 41 </span> 42 <div class="span1"> 43 <div class="bui-input"> 44 <input b-model="page.user.userpwdCon" class="bui-input" id="userpwdCon" placeholder="请输入密码" type="password"> 45 </div><!--b-model="page.user.userpwdCon"是bui数据驱动的双向绑定,input应该使用b-model, 46 page.user.username绑定的是page作用域 47 (即bui.store({})中的scope,下的data数据对象的user对象的userpwdCon属性)--> 48 </div> 49 </li> 50 </ul>
然后是js代码
<script> bui.ready(function () { var bs=bui.store({ scope:"page", data:{ user:{ "username":"", "userpnumber":"", "userpwd":"", "userpwdCon":"" }/*注册用的user对象,使用JSON格式表示,这里要严格的遵循JSON格式,即键名与值均包含在双引号内,不可用单引号*/ }, methods:{ register:function(){ if(this.user.userpwd!=this.user.userpwdCon){ bui.hint('两次密码需要保持一致'); }else{ let _self=this;//由于点击事件的this为register()方法,为了在success中对user对象进行操作,用_self保存下来 $.ajax({ url:"doRegister", type:"post",/*提交方式为post*/ data:{"user":JSON.stringify(_self.user)},/*以键值对的方式提交JSON数据,设置用双引号包含的键名以及把JSON对象利用JSON.stringify()函数转化为字符串*/ dataType:"json",/*将数据类型设为json*/ success:function (ss) { if(ss>-1) window.location='login'; }, error:function (data) { } }) } } } }); }) </script>
然后是php后台代码
public function doRegister() { $jsonuser = $_POST['user'];//由于在$.ajax()中用的是post方式,从$_POST中获取JSON字符串 $user = json_decode($jsonuser, true);//使用json_decode()方法把JSON字符串解码为php关联数组, //所以方法的assoc参数值为true,assoc就是关联的意思,意为把JSON字符串转化为php关联数组 //否则会转化为php对象 $userdao = new UserinfoModel(); $result = $userdao->addUser($user); echo $result; }
这样就可以了。
路漫漫其修远兮,吾将上下而求索。