我想要一个登录页面,如果任何用户在点击提交按钮后输入无效密码或用户名,则用户将在同一页面上显示错误消息。
我应该如何启用此要求?这是可能的ajax或javascript?
答案 0 :(得分:0)
是的,这可以通过Ajax实现。坦率地说,如果您使用Prototype,jQuery,Closure等库,这是最简单的,因为它们可以消除浏览器差异等等,并且有很多内置的 - 在功能上。
例如,这里有一个相当简洁的方法,您可以使用带有Prototype的Ajax提交表单并查看响应:
$('formid').request({
onSuccess: function(response) {
// Request succeeded, check result for whether login was valid
}
});
(假设表单的id为“formid”。)
这是一个更完整的示例,它还显示了您如何挂钩提交过程。您可以通过在表单上挂钩submit
事件并发送Ajax请求来触发该代码:
$('formid').observe('submit', function(event) {
// Prevent the standard form submission
event.stop();
// Do it via Ajax instead, including an additional flag telling
// the server that this is an Ajax call
this.request({
parameters: {viaAjax: true},
onSuccess: function(response) {
// Request succeeded, check result for whether login was valid
if (response.responseJSON &&
response.responseJSON.loginOkay) {
// Login worked!
}
}
});
});
以上做了以下事情:
viaAjax
标志,告诉服务器我们通过Ajax发送表单服务器应该期望表单在有或没有viaAjax
标志的情况下到达。如果标志在那里,则表示浏览器支持Javascript并且表单以这种方式提交,因此它应该返回一个标志告诉我们登录是否正常(在上面我假设它将返回{{3} } -formatted data {"loginOkay": true}
,这意味着它应该将内容类型设置为application/json
)。如果标志不是,则在浏览器上禁用Javascript,服务器应以正常方式处理表单提交,返回完整的HTML页面。 (无论是否启用Javascript,这种处理它的业务称为“渐进增强”或“优雅降级”。)