投放本站广告请联系:
extjscn#126.com
移动WEB应用开发-SENCHA TOUCH篇(6)
本次我们来接触一下Sencha Touch中的AJAX以及 相应的后台PHP程序。
实现表单的AJAX异步提交
需要设定的参数:
url:表单提交时的目标URL地址
standardSubmit:使用布尔值指定表单提交方式(true为同步,false为异步,默认为false)
baseParams属性可以在表单中指定
var formPanel = Ext.create(‘Ext.form.Panel’, { baseParams:{ id:’1’, name:’text’ } })
表单提交的基本代码:
launch:function(){ var formPanel = Ext.create(‘Ext.form.Panel’,{ id:’formPanel’, scrollable:’vertical’, url:’filmSave.php’, items:[ { xtype:’panel’, layout:{ type:’hbox’, pack:’end’ }, defaults:{ xtype:’button’ }, items:{ { text:’提交’, handler:function(){ formPanel.submit(); } }, { text:’重置’, handler:function(){ formPanel.reset(); } } } } ], listeners:{ submit:function(form,result){ Ext.Msg.alert(‘提交成功!’); }, exception:function(form,result){ Ext.Msg.alert(‘提交失败!’); } } }); Ext.Viewport.add(formPanel); }
submit事件:第一个参数为执行提交的表单面板组件,第二个参数代表服务器端做出的响应对象
exceeption事件:抛出异常
waitMsg:表单提交时等待信息
formPanel.submit({ waitMsg:{message:’正在提交...’, cls:’demos-loading’} })
success为当提交后调用的回调函数,服务器通过返回”success”属性来标识提交是否成功,并可添加其他信息
{ “success”:false, “msg”:’发生错误’, “errors”:[ { “field”:”name”, “message”:”输入的名称在数据库中已存在” }, { “field”:”title”, “message”:”输入的电影标题在数据库中已存在” } ] }
Sencha Touch中提供了各种表单验证
在表单中输入一些信息之后,可以使用getValues()方法获取
var obj = formPanel.getValues();
返回的是一个对象,如下:
{ name:”Tom”, sex:”male”, ...... } var obj = formPanel.getValues(true)//只返回有效组件
在之前已经介绍过建立数据模型的方法,要想把用户输入表单的信息实例化一个对象,代码如下:
var obj = formPanel.getValues(); var model = Ext.create(‘User’, obj);//User为一个数据模型
这就相当于:
var model = Ext.create(‘User’,{ name:’Tom’, sex:’male’, ...... })
在建立数据模型的时候可以设定验证方法:
Ext.define(‘User’,{ extend:’Ext.data.Model’, config:{ field:[//省略], validations:[ //这里是表单验证内容,type为内置的表单验证类型 //必填项 {type:’presence’,field:’name’,message:’姓名必须输入’}, //填的内容不能是list中的内容 {type:’exclusion’,field:’name’, list:[‘admin’,’administrator’,’管理员’],message:’不能使用这个姓名’}, //填的内容必须包含在list中 {type:’inclusion’,field:’sex’, list:[‘male’,’female’], message:’必须选择性别’}, //按照正则表达式匹配内容 {type:’format’,field:’url’, matcher:......, message:’必须输入有效的网址’} ] } })
对应的后台php代码
<?php $name = formatStr($_REQUEST[‘name’]); $sex = $_REQUEST[‘sex’]; //其他取值类似 //数据库配置代码略 $result = mysql_query(“SELECT * FROM users where name=’”.$name.”’”,$link); if(mysql_num_rows($result) > 0){ echo ‘{“success”:false, “errors”:[{“message”:’.json_encode(“该用户名已存在”).’}]}’; }else{ //插入数据 $sql = “insert into users(name, sex, password, age, email, url, memo)”; $sql = $sql.”values(”; $sql = $sql.”’”.$name.”’,”; //......省略其他 mysql_query($sql); } function formatStr($str){ return trim(str_replace(“’”,”’’”,$str)); } ?>
作者: fareise
原文: http://blog.csdn.net/fareise/article/details/50615771
- 关键字:
- 要发表评论,请先登录