我正在使用Ext.direct.RemotingProvider。在服务器端,我做了一些验证检查。 Respond以JSON格式发回。
如果在进行验证检查时发现任何错误,则字段成功= false,错误将包含错误。
我想知道,我如何反映我在服务器端(客户端)发现的错误。
在下面的链接中有一个我想要实现的例子。当客户端按“提交”时,表单中会出现错误消息,它是如何工作的?
在我发布在底部的代码中,会发生以下情况: 在浏览器中有2个字段(名称,电子邮件)和2个按钮。 这些领域现在无关紧要。它们被用作傻瓜。
每次用户按下“添加”按钮时,都会在Ext.direct的callBuffer中添加一个新动作.RmotingProvider 当用户按下“应用”按钮时,所有操作都将被发送到路由器(MVC模型)并从那里发送到特定控制器。 (函数sfw.Direct.getProvider('sfwProvider')。combineAndSend()被触发)。
就目前而言,我故意无法响应并创建一个错误字段,就像我在Thread开头添加的示例链接一样。 我输入了错误字段{email =“已经存在”}。 但我认为形式没有影响..
我做错了什么?
代码:
appWiki.main_panel = new Ext.FormPanel({
renderTo: 'extjs_panels_container'
, id: 'appWiki_main_panel'
, name: 'appWiki_main_panel'
, defaultType: 'textfield'
, items: [
{
fieldLabel: 'Name',
name: 'name'
}
,{
fieldLabel: 'Email',
msgTarget: 'side',
name: 'email'
}]
,buttons:[
{xtype: 'sfw.Button'
, text: 'Add'
, handler: function(){sfw.rule.store.api.readByRowId({data: {_ROWID_: 1}});}
}
,{text: 'Submit'
, handler: function(){
appWiki.main_panel.getForm().submit({
});
}
}]
,api: {
// The server-side must mark the submit handler as a 'formHandler'
submit: sumbitAllRequests
}
, load: function()
{
setTimeout("hide_loading_mask()",2000);
}
});
答案 0 :(得分:0)
在JSON响应中,您需要以下结构
{ "result" : { "success": false, "errors": { "name of field" : "validation message" } }
"name of field"
是您字段中的name
配置选项,"validation message"
是您要向用户显示的消息。
当您发送类似的响应时,ExtJS会处理其余的事情。
编辑:您可能还需要启用QuickTips:
Ext.QuickTips.init();
在声明表单之前添加该行
编辑2:另外,请确保您使用submit()
上的BasicForm
方法:
buttons:[{
text: 'Submit',
handler: function(){
basicInfo.getForm().submit({
params: {
foo: 'bar',
uid: 34
}
});
}
}],