0

在我的 jQuery 函数中,我使用 window.location.href 像这样重定向:

window.location.href = "${pageContext.request.contextPath}/redirectUser.ajax?login="+response.result.name;

它工作正常,但我在浏览器中看到这个字符串是这样的:

http://localhost:8080/task7/redirectUser.ajax?login=user

我的控制器也使用 GET

@RequestMapping (value="/redirectUser.ajax",method = RequestMethod.GET)
    public String forwardUserToUsersPage(ModelMap model, HttpServletRequest req){
        User foundedUser = userDao.findByLogin(req.getParameter("login"));
        req.getSession().setAttribute("user", foundedUser);
        return "userPage";//to WEB-INF/jsp/userPage.jsp
    }

如何重写这部分应用程序以便用户 POST 方法重定向并在控制器中处理?

这是从 servler 接收回复的函数(实际上是函数的一部分)

function doAjaxPost() {
    // get the form values
    var queryString = $('#loginform').formSerialize();

    $.ajax({
    type: "POST",
    url: "${pageContext. request. contextPath}/loginUser.ajax",
    data: queryString, 
        //"name=" + name + "&pswd=" + pswd,

    success: function(response){    
        // we have the response
        var delay = 1500;
        if (response.status == "OK_USER") {
            $('#error').html('');
            $('#info').html("Login exists, password is correct everything will be fine.<br> Redirect to User's page"); 

            //var delay = 3000;
            setTimeout(function() {
            window.location.href = "${pageContext.request.contextPath}/redirectUser.ajax?login="+response.result.name;
            }, delay);

        } 
....

那么如何使用 jQuery 或其他使用 POST 方法进行重定向呢?

4

1 回答 1

1

我看到的最快方式:

创建一个<form>节点,将其设置action为正确的 URL 和method="post",用所需的参数(在<input>字段中)填充它,然后调用.submit().

例如:

...
setTimeout(function(){
    var $form = $('<form>').attr({
        action: "${pageContext.request.contextPath}/redirectUser.ajax",
        method: "post"
    });

    $form.append('<input name="login" value="'+response.result.name'" />');
    $form.submit();
}, delay);
...
于 2013-03-04T08:47:37.297 回答