我在我的应用程序中使用Jquery / Ajax / Spring MVC。我正在尝试进行简单的登录,但在函数js.js中的jquery中遇到div加载。即使它是代码,代码也不会打印Authenticated。只有当我刷新页面时,才会看到它经过身份验证。 我试过Chrome,IE和FF但效果相同。 PL。建议我在这里缺少什么。谢谢
登录JSP -
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<button type="submit" class="btn btn-success spacer" onclick="loginToAccount('login.html', 'loginForm');"> Sign in
</button
</div>
</div>
模板jsp
<div id="refreshDiv">
<sec:authorize access="isAnonymous()">
anonymous
</sec:authorize>
<sec:authorize access="isAuthenticated()">
authenticated
<li><a href="<c:url value="/j_spring_security_logout" />">Log out</a></li>
</sec:authorize>
</div>
Functions.js
function loginToAccount(targetUrl,form){
postAjaxData(null,'content',targetUrl, form ,null, null);
welcomeUser();
}
function welcomeUser(){
$('#refreshDiv').load(' #refreshDiv').html();
return false;
}
答案 0 :(得分:0)
不确定您希望以下行做什么,但它无效jQuery :
$('#refreshDiv').load(' #refreshDiv').html();
也许你想写:
$('body').load(' #refreshDiv');
将使用template.jsp
中的相应部分替换现有内容。
答案 1 :(得分:0)
在登录ajax请求完成之前,您正在刷新refreshDiv
。你需要一个回调。
function postAjaxData(stuff) {
// of course, you'll have to fill
// this in with your ajax method
// of choice, just make sure you
// return a promise object.
return $.ajax(stuff);
}
function loginToAccount(targetUrl,form){
postAjaxData(null,'content',targetUrl, form ,null, null).done(function () {
welcomeUser();
});
}
function welcomeUser(){
$('#refreshDiv').load(' #refreshDiv').html();
return false;
}
另外,当你.load一个特定的div时,你正在加载那个div,而不是它的内容,所以你想要一个元素。
$("#parentOfrefreshDiv").load(" #refreshDiv")
或者让一个孩子刷新目标:
$("#parentOfrefreshDiv").load(" #refreshDiv > div");