0

以下代码检查用户并在用户未登录时返回 false。

  function checkLogin(e) {
    loggedIn = $('#loggedin').text();
    if(loggedIn == '1'){
      e.preventDefault();
      alert("Please Log In");
      return false;
    }
  }

然后我在其他代码和 ajax 调用之前调用此函数。

tileFavorite = $('.tileFavorite');
tileFavorite.on('click', function(e) {
      checkLogin(e);

     //some code goes here before ajax call

    $.ajax({
        url: // ajax call goes here,
        cache: false
    })
});

检查登录实际上有效。但是,如果 checkLogin 函数返回 false,它仍然会继续执行它下面的代码。有办法避免这种情况吗?

4

3 回答 3

1

您没有采取任何措施来阻止调用该代码。

尝试:

  function checkLogin(e) {
    loggedIn = $('#loggedin').text();
    if(loggedIn == '1'){
      e.preventDefault();
      alert("Please Log In");
      return false;
    }

    return true;
  }

tileFavorite.on('click', function(e) {
    if (! checkLogin(e))
      return false;

     //some code goes here before ajax call

    $.ajax({
        url: // ajax call goes here,
        cache: false
    })
});
于 2013-08-22T17:54:19.470 回答
0

试试这个

tileFavorite.on('click', function(e) {
  if(false == checkLogin(e)){
    return false;
  }
     //some code goes here before ajax call

    $.ajax({
        url: // ajax call goes here,
        cache: false
    })
});

点击时 tileFavorite 应返回值以停止执行。

于 2013-08-22T17:53:23.597 回答
0

看起来你没有对false实际返回的内容做任何事情。你可以试试:

if (checkLogin(e)) {
    ...
    $.ajax(
        ...
    );
}
于 2013-08-22T17:54:15.813 回答