0

在首先使用 jquery 表单验证插件对输入进行验证之后,我试图在 ajax 中使用 jsRoutes 提交表单。问题是当我将“数据:表单”添加到 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>
},
4

1 回答 1

3

为您的标签设置一个唯一的 ID 属性,<form>即:<form id="my_form" ...>然后使用 ID 作为 jQuery 选择器对其进行序列化:

   jsRoutes.controllers.Application.authenticate().ajax({
    data : $("#my_form").serialize(),
    success : function(data) {
        // ...
    },
    error : function(err) {
        // ...
    }
});

使用一些浏览器内检查工具(即FireBug)检查它是否发送了您想要的内容以及响应是否formatted符合要求

于 2012-08-12T12:00:04.587 回答