我首先尝试使用jquery表单验证插件对输入进行验证后在ajax中使用jsRoutes提交表单。问题在于,当我添加"数据:form"对于ajax调用的参数,永远不会调用响应处理程序。一些代码可以进一步解释这个问题:
jsRoutes.controllers.Application.authenticate().ajax({
data : {
form : this //this messes things up!
},
success : function(data) {
window.location = "/"; //never called with the above data stuff
},
error : function(err) {
alert(err); //never called with the above data stuff
}
});
我能够读取控制器中的表单字段。一种解决方案当然是从表单中手动将每个字段提取到数据部分(如下所示),但这不是必需的。还有其他解决方案吗?
data : {
username : <username from form>
password : <password from form>
},
答案 0 :(得分:3)
为<form>
标记设置唯一的ID属性,即:<form id="my_form" ...>
,然后使用ID作为jQuery选择器对其进行序列化:
jsRoutes.controllers.Application.authenticate().ajax({
data : $("#my_form").serialize(),
success : function(data) {
// ...
},
error : function(err) {
// ...
}
});
使用浏览器内部检查工具(例如FireBug
)检查是否发送了您想要的内容以及响应是否为formatted