有些时候,页面上的数据校验可能会涉及到数据库中的多张表,逻辑比较复杂,无法通过javascript来校验,这个时候可以考虑通过AJAX执行server端校验
通过AJAX执行server端校验具体是指:将界面上的数据通过Aurora.request方法发送至服务端,通过指定的url路径去请求某一个bm中定义的方法(一般来说,我们比较多的采用bm的execute方法来进行校验。)去调用数据库中的包来进行校验。
如果校验不成功则通过包的错误处理,向页面上抛出具体的出错信息。
如果校验成功则执行Aurora.request方法中定义的成功后的回调函数。
Aurora的request方法接受一个object类型的参数。该参数有几个特定的属性。如下表
Table 1. >Aurora.request方法参数的特定属性
属性 | 说明 |
---|
url | 指定该请求需要提交到的bm路径及调用该bm中的哪个方法 |
para | 需要提交的数据对象,必须满足json数据的格式 |
success | 提交成功后需要执行的函数function(response){},response参数获取返回的提交结果,可以在{}中写入需要执行的操作,或者对返回的提交结果继续进行操作 |
scope | 作用域,一般写this,表示当前作用域就行了 |
下面的代码,通过Aurora.request请求名为xxx的bm的execute方法对name进行校验,检验成功后弹出提示框,提示校验通过
function check_name()
{
var name=$('aaa_ds').getCurrentRecord().get('name');
Aurora.request(
{
url: '${/request/@context_path}/autocrud/xxx/execute',
para:
{
'name':name
},
success: function(response)
{
Aurora.showMessage('提示','校验通过');
},
scope: this
}
);
}
<a:dataSets>
<a:dataSet id="aaa_ds" model="xxx">
<a:fields>
<a:field name="name" required="true"/>
</a:fields>
</a:dataSet>
</a:dataSets>
<a:form title="校验名称" >
<a:textField name="name" bindTarget="aaa_ds" prompt="名称" />
<a:button click="check_name" text="校验名称" />
</a:form>
Comments
4 Responses to the article