使用锚标签提交ajax来弹出mvc控制器

时间:2014-11-14 03:13:55

标签: ajax spring spring-mvc

我正在尝试用我的春季mvc应用ajax,但无法找到我犯错误的地方。我尝试按照几个教程,但无法定制我的工作。它总是落到错误状态。

所以这是我的ajax电话

function doAjax() {
    var username = $('#username').val();
    var email = $('#email').val();
    var password = $('#password').val();

    var json = {
            "username" : useranme, 
            "email" : email, 
            "password" : password
    }
    //alert("username: " + username + "  email: " + email + " password: " + password);

    $.ajax({
        type: "POST",
        url: $('form').attr('action'),
        data: JSON.stringify(json),
        dataType: "JSON",

        success: function(data) {
        },
        error:function(data, status, err) {
            alert("error");
        }
    });
};

这是我的表格:

<div class="form">
        <spring:url var="registerUrl" value="http://localhost:9004/Project/register" htmlEscape="true" />
        <form method="post" action="${registerUrl}">
            <div class="form_field">
                <label for="username">Username</label><br/>
                <input class="field" id="username" type="text" name="userName" autocomplete="off"/>
            </div>
            <div class="form_field">
                <label for="email">Email</label><br/>
                <input class="field" id="email" type="email" name="email" autocomplete="off" />
            </div>
            <div class="form_field">
                <label for="password">Password</label><br/>
                <input class="field" id="password" type="password" name="password" />
            </div>
            <div class="form_field prefix_clear">
                <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
                <input id="submit" class="action_button" type="submit" value="Register"/>
            </div>
        </form>
        <a href="#" id="button12" onClick="doAjax()" class="action_button">Click me</a>
    </div>

因此,如果我使用输入提交表单,它将完美运行。但是当我尝试使用锚标记提交它时,它不起作用。请帮忙。

1 个答案:

答案 0 :(得分:0)

要使ajax调用与表单提交完全一致,您应该将数据:JSON.stringify 替换为

,而不是使用JSON。
data:$("form").serialize();

如果你必须使用JSON数据发出请求,那么你必须使用映射方法和命令对象来编辑你的问题以获得帮助,但是你的代码显然有一个问题,那就是你是不包括ajax请求中的 _csrf 参数