0

私は楽しみのために JQuery を試していますが、ちょっとした壁にぶつかりました。ログインページを作成しようとしていますが、ユーザーがログインIDとパスワードを入力して送信ボタンをクリックするフォームをjspに作成することを考えていました。これは、バックエンドへの AJAX 呼び出しを行う JQuery メソッドによってキャッチされます。「success」メソッドは、window オブジェクトの場所を、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?クエリ パラメータなしでto 。私は一日中頭を叩いています。新しいページでクエリ パラメータを正しく取得するにはどうすればよいですか?

よろしく、

ティム

4

2 に答える 2

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 に答える
0

location代わりに値を割り当ててみてください

window.location = data.redirect;
于 2013-09-04T00:21:52.543 に答える