Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果用户未登录,则发送警报消息_Javascript_Jquery_Login - Fatal编程技术网

Javascript 如果用户未登录,则发送警报消息

Javascript 如果用户未登录,则发送警报消息,javascript,jquery,login,Javascript,Jquery,Login,如果需要用户登录,但同时避免ajax调用,那么向用户发送警报消息的最佳方式是什么?我可能有类似于的代码,它会根据单击触发ajax函数。我想我会在服务器端检查用户是否登录,并将其替换为: 。如果单击该按钮,则会提醒他们需要登录。问题是,我可能有一些css样式用于投票。如果我改为,它将触发ajax调用和警报,因此我必须检查ajax调用是否不存在not loggin in类,但对于所有具有ajax调用的click函数,这样做似乎有点乏味。或者调用父id并将样式设置为#parentId a{}?还是有更

如果需要用户登录,但同时避免ajax调用,那么向用户发送警报消息的最佳方式是什么?我可能有类似于
的代码,它会根据单击触发ajax函数。我想我会在服务器端检查用户是否登录,并将其替换为:
。如果单击该按钮,则会提醒他们需要登录。问题是,我可能有一些css样式用于投票。如果我改为
,它将触发ajax调用和警报,因此我必须检查ajax调用是否不存在not loggin in类,但对于所有具有ajax调用的click函数,这样做似乎有点乏味。或者调用父id并将样式设置为#parentId a{}?还是有更好的方法?我不知道人们通常做什么,所以我想听听他们的意见。谢谢

这个怎么样:

HTML:

<body class="not-logged-in"> -- or -- <body class="logged-in">
<a href="/vote/13" class="vote">Vote!</a>

如果
a#vote
元素的点击处理程序绑定到
vote
id,则必须更改已注销用户的id或向点击处理程序添加条件

您提到,在继续进行AJAX调用之前,您不想检查
未登录的
类,因此我假设这意味着您宁愿不使用click处理程序,而是想出其他方法使链接看起来像投票链接,而不是像投票链接

您可以创建一个备用id并为其提供相同的样式,如下所示:

HTML:

<a href="#" id="fakeVote"> 

CSS:

#vote, #fakeVote { /* CSS here */ } #投票,假装投票{ /*CSS在这里*/ }
这样做的好处是,您可以为
a#fakeVote
元素添加一个新的click处理程序,以提醒注销的用户。

如果您想通过每次单击减少DOM查找时间,只需将“loggedIn”类附加到body元素,并在页面加载后立即执行检查

var loggedIn = $('body').hasClass('loggedIn');
现在,您不必检查链接本身,而是检查该变量

或者,为ajax调用编写一个包装器

$.fn.ajaxLoggedIn = function() { 
  if (loggedIn) { 
    $.ajax.apply(this, arguments);
  } 
  else {
    alert('You are not logged in');
  }
}

谢谢,我没想过那样做。
$.fn.ajaxLoggedIn = function() { 
  if (loggedIn) { 
    $.ajax.apply(this, arguments);
  } 
  else {
    alert('You are not logged in');
  }
}