2013-03-04 1 views
0

В моей функции JQuery я перенаправлять Использование window.location.href так:Как перенаправить в JQuery с помощью POST вместо GET

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 
    } 

Как я могу переписать эту часть приложения, чтобы использовать r Метод 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?

ответ

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); 
... 
+0

Форма, подтверждающая использование плагина проверки jQuery. Эта функция получает ответ от контроллера, а затем перенаправляет пользователя на userPage.jsp или на adminPage.jsp. Я сделал это, используя простой javascript window.location.href Возможно, есть такая же функция в jQuery? –

+0

К сожалению, ваше решение не работает. Я просто получаю эту строку в своем браузере в блоке страницы: {"status": "OK_USER", "result": {"name": "user", "pswd": "123"}} Я изменил контроллер на POST и добавил @ModelAttribute (значение = "login") Строковый логин, Все еще не работает –

+0

В этом случае вы не указали правильный URL-адрес для входа пользователя. Если используется 'redirectUser.ajax' для прерывания с помощью 'ajax' и возврата данных, отформатированных в' json', вы должны использовать его как таковой. Посмотрите на логику своего приложения и проверьте, как пользователь должен пройти аутентификацию. – LeGEC

Смежные вопросы