我正在尝试使用 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?
没有查询参数。我整天都在敲我的头。我该怎么做才能让新页面正确获取查询参数?
问候,
蒂姆