我有ExtJS 4 MVC架构风格的登录表单。也就是说,我有一个控制器和一个视图。
视图文件(仅显示组件创建部分):
initComponent: function() {
this.items = [
{border:false, baseCls: 'x-plain', flex:8}, // 13/8 - is golden ratio (approx.)
{
border: false,
baseCls: 'x-plain',
layout: {
type: 'vbox',
pack: 'center',
align: 'center'
},
items: [
{
xtype: 'form',
url: 'http://localhost/my_site/login.php',
title: 'login_form_title',
bodyPadding: 5,
width: 280,
fieldDefaults: {
labelAlign: 'right',
labelWidth: 90,
anchor: '100%'
},
items: [
{
xtype: 'textfield',
name: 'username',
fieldLabel: 'username',
allowBlank: false
},
{
xtype: 'textfield',
inputType: 'password',
name: 'password',
fieldLabel: 'password',
allowBlank: false
},
{
border: false,
baseCls: 'x-plain',
layout: {
type: 'hbox',
pack: 'center',
align: 'center'
},
items: [
{
xtype: 'button',
formBind: true,
disabled: true,
text: 'login',
action: 'login'
}
]
}
]
}
]
},
{border:false, baseCls: 'x-plain', flex:13} // 13/8 - is golden ratio (approx.)
];
this.callParent(arguments);
}
在我的控制器中,我将登录按钮onLlick绑定到某个函数,在该函数内部,我使用这段代码将表单提交给服务器:
oForm.submit({
success: function(form, action) {
console.log('success');
},
failure: function(form, action) {
console.log(action.failureType);
}
});
这是http://localhost/my_site/login.php
<?php
exit;
当我按下登录按钮时,我在开发者控制台中看到success
。问题如下:
failure
,即在此情况下让开发人员控制台记录一些failureType
。success
?非常欢迎链接到官方文档或其他资源。使用以下http://localhost/my_site/login.php
时,我在开发者控制台中获得server
,这是正确的。
<?php
echo json_encode(
array(
'success'=>false,
'errors' => array(
'reason' => 'Invalid username or password'
)
)
);
exit;
答案 0 :(得分:2)
您需要做的就是为响应设置HTTP标头!查看here或here
基本上你可以说,如果响应的状态代码不是“200 Success”,那么ExtJS会调用失败方法!
在您的情况下,您应该执行以下操作:
<?php
header('WWW-Authenticate: Basic realm="Top Secret Files"');
header("HTTP/1.0 401 Unauthorized");
?>
您还应该设置正确的内容类型。默认为“text / plain”,但在您的情况下,您应将其设置为“application / json”。如果你没有将它设置为application / json,你必须手动解析响应,否则ExtJS会为你做。
header('Content-type: application/pdf');
在这里,您可以找到关于HTTP标头的非常好的tutorial! here你在PHP中有一个例子!
我在服务器端使用C#,所以我不知道实际的php代码,但只要HTTP标头 200 OK Ext-JS就会调用success-method !
答案 1 :(得分:0)
- 是否可以将空响应视为
failure
,即让开发人员控制台记录一些 在这种情况下failureType
。- 为什么空响应被视为
醇>success
?非常欢迎链接到官方文档或其他资源。
Ext.form.submit()
根据以下回复标记为失败 -
{
success: false,
errors: {
clientCode: "Client not found",
portOfLoading: "This field must not be null"
}
}
只要不包含success:false
您可以找到有关此Here
的更多信息