jQuery ajax请求不要更正url

时间:2017-12-27 19:06:07

标签: jquery ajax spring-mvc

我正在尝试通过jquery发送ajax请求。一切都没关系,除了网址。它应该是http://localhost:8080/register,但是http://localhost:8080/login所以它是当前页面的网址。此外,当我调试应用程序时,我可以看到此请求转到带有“/ login”值的控制器方法。我不知道为什么。这是ajax方法的代码:

$("#my-signin2").on("click", function(){
    $.ajax({
        url: 'http://localhost:8080/register',
        type: 'post',
        success: function (data) {
            console.info(data);
        }
    });
});

还有控制器方法:

@RequestMapping(value = "/login")
public String login(){
    return Links.LOGIN.getUrl();
}

@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(){
    return Links.HOME.getUrl();
}

此外,我正在使用spring security及其处理csrf令牌的代码:

var csrfHeader = $("meta[name='_csrf_header']").attr("content");
var csrfToken  = $("meta[name='_csrf']").attr("content");
$(document).ajaxSend(function(e, xhr, options) {
    xhr.setRequestHeader(csrfHeader, csrfToken);
});

我从服务员那里得到了正确答案,但是从登录方式中得到了答案。

更新:

Spring安全性将所有未经授权的请求重定向到登录页面,因此请求正常。谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

您应首先使用e.preventDefault()阻止默认操作,然后您可以发送自定义ajax请求,例如:

$("#my-signin2").on("click", function(e){
    e.preventDefault(); //Prevent the page from refreshing

    ....
});

答案 1 :(得分:2)

#my-signin2必须包含属性type="button" 因为你没有设置type。默认为submit