0

我正在尝试使用 JQuery 来获得乐趣,但我遇到了一些难题。我正在尝试编写一个登录页面,我的想法是在 jsp 上有一个表单,用户可以在其中输入登录 ID 和密码并单击提交按钮。然后这被 JQuery 方法捕获,然后对后端进行 AJAX 调用。然后,“成功”方法应将窗口对象的位置设置为由 Ajax 调用返回的值指示的新 URL。仅供参考:我是一个后端人员,我已经覆盖了那部分。我的问题是,虽然我调用后端并获取我需要的数据。然后我尝试使用包含单个查询参数的 URL 设置一个新窗口位置(以允许应用程序知道用户是谁),这几乎可以在我到达基本 URL 但没有查询参数时工作(尽管有一个 '?'

这是我的 JQuery 代码:

    </script>
      $(document).ready(function(){
        submit( function() {
          var id = $("#login_id").val();
          var pwd = $("#password").val();
          var uri = "`http://localhost:8080/SW_Server/rest/admin/login`";
          $.ajax({
            async: false,
            url: uri,
            type: 'GET',
            dataType: "json",
            success: function(data) {
              var session = data.session;
              newLoc = data.redirect+"?"+data.session
              // Prevent the form's default submission.
              preventDefault();
              // Prevent event from bubbling up DOM tree, prohibiting delegation
              event.stopPropagation();
              window.location.replace(encodeURIComponent(newLoc));
            },
          error: function(jqHHR, textStatus, errorThrown) {
            alert("textStatus: "+textStatus+"\nerror: "+errorThrown);
            // Prevent the form's default submission.
            event.preventDefault();
            // Prevent event from bubbling up DOM tree, prohibiting delegation
            event.stopPropagation();          
          }
        });
      });
    </script>

当我执行此操作时,我的后端当前返回 data.redirect=http://localhost:8080/test.jsp和 data.session=session_id=3,我在警报中看到(对我来说万岁),但是当 window.location.replace(newLoc) 被调用时到http://localhost:8080/test.jsp?没有查询参数。我整天都在敲我的头。我该怎么做才能让新页面正确获取查询参数?

问候,

蒂姆

4

2 回答 2

0

尝试将值分配location

window.location = data.redirect;
于 2013-09-04T00:21:52.543 回答
0

你试过一些吗:

$(document).ready(function(){
        $("#loginForm").submit( function(event) {
          var id = $("#login_id").val();
          var pwd = $("#password").val();
          var uri = "http://localhost:8080/SW_Server/rest/admin/login";
          alert("uri: "+uri);
          $.ajax({
            async: false,
            url: uri,
            type: 'POST',
            dataType: "json",
            data: { "id":id, "pwd":pwd },
            success: function(data) {
                $('#loginForm').attr('action',data.redirect);
                $('#loginForm').submit();
            },
            error: function(jqHHR, textStatus, errorThrown) {
              alert("textStatus: "+textStatus+"\nerror: "+errorThrown);      
            }
          });


           // Prevent the form's default submission.
           event.preventDefault();
           // Prevent event from bubbling up DOM tree, prohibiting delegation
           event.stopPropagation();

           //and also    
           return false;
        });
});
于 2013-09-04T00:28:07.503 回答