div加载jquery的奇怪行为

时间:2014-07-08 18:18:47

标签: jquery

我在我的应用程序中使用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;

}

2 个答案:

答案 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");