ajax 或session方法判断页面是否登录,并跳转至相应页面

方法一:讲述了jQuery基于ajax实现页面加载后检查用户登录状态的方法。分享给大家供大家参考,具体如下:

拥有会员功能的网站,如果会员已经登录,那么要显示相应的登录状态,而且这种显示的需求是在网站的每个页面都有的(目前国内网站貌似都是这么做的,还没有见过其他形式的状态显示方式),这样,在打开一个新的页面时就要知道这个会员是否已经登录,需要判断登录的状态。

1、解决方案。

为了能够实现在每一个页面判断会员登录状态的功能,我采用了页面时通过ajax传递参数通过后端返回的登录状态结果进行判断,当然,这种方式实现的前提是登录状态在后端可以保持或者能够查询到并且不利用页面向后端发送特别参数。

2、代码部分。

(1)html部分

?

1

<div id="state_content"></div>

(2)jquery部分

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

jQuery(document).ready(function ()

{

  getUserData();

});

function getUserData()

{

  var Option =

   {

    url: encodeURI('/Handler/AuthAccounts.ashx?action=getloginstate'),

    type: "post",

    dataType: 'text',

    cache: false, //设置为 false 将不会从浏览器缓存中加载请求信息。

    async: true, //(默认: true),所有请求均为异步请求。发送同步请求,请将此选项设置为 false。同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

    timeout: 150000, //设置请求超时时间(毫秒)。此设置将覆盖全局设置。

    error: function ()

    {

    },

    success: function (data, textStatus)

    {

     if (data == null || data == undefined)

     {

      return false;

     }

     jsondata = eval('(' + data + ')');

     if (jsondata.state == "success")

     {

      var weburl = '<a class="username">欢迎你,' + jsondata.message.split('|')[1] + '</a><a class="go_out" onclick="ExitLoginState()">退出</a>';

      $("#state_content").html(weburl); //内容

     }

     else

     {

      var textList = '<a href="/Login/index.shtml" rel="external nofollow" rel="external nofollow" >【登录】</a><a href="/Register/index.shtml" rel="external nofollow" rel="external nofollow" >【注册】</a>';

      $("#state_content").html(textList); //内容

     }

    },

    beforeSend: function ()

    {

    }

   };

  jQuery.ajax(Option);

  return false;

}

function ExitLoginState()

{

  var Option =

   {

    url: encodeURI('/Handler/AuthAccounts.ashx?action=exitloginstate'),

    type: "post",

    dataType: 'text',

    cache: false, //设置为 false 将不会从浏览器缓存中加载请求信息。

    async: true, //(默认: true),所有请求均为异步请求。发送同步请求,请将此选项设置为 false。同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

    timeout: 150000, //设置请求超时时间(毫秒)。此设置将覆盖全局设置。

    error: function ()

    {

    },

    success: function (data, textStatus)

    {

     if (data == null || data == undefined)

     {

      return false;

     }

     jsondata = eval('(' + data + ')');

     if (jsondata.state == "success")

     {

      alert("已经退出");

      var textList = '<a href="/Login/index.shtml" rel="external nofollow" rel="external nofollow" >【登录】</a><a href="/Register/index.shtml" rel="external nofollow" rel="external nofollow" >【注册】</a>';

      $("#state_content").html(textList); //内容

     }

    },

    beforeSend: function ()

    {

    }

   };

  jQuery.ajax(Option);

  return false;

}

 

 

方法二:session

 

方法二讲述了js判断登录与否并确定跳转页面的方法。分享给大家供大家参考。具体如下:

使用session存储,确定用户是否登录,从而确定页面跳转至哪个页面。

判断本地有无customerID:

function jumpTo(p, url) { 
   var customerId=sessionStorage.customerId; 
   if (customerId == undefined) { 
     p.attr("href", "page/Login/login.html"); 
<span style="white-space:pre">  </span>} else { 
      p.attr("href", url); 
    } 
} 
 function infoJumpTo() { 
   var $info = $("#info"); 
   jumpTo($info, "http://localhost/page/AmountAscension/amountAscension.html"); 
} 
 function starJumpTo() { 
   var $star = $("#star"); 
   jumpTo($star, "http://localhost/page/MyAccount/myAccount.html"); 
 }

html中,相应的a标签中,写οnclick="infoJumpTo"等就可以了。

但登录页面的customerID是如何存储到本地的session中的呢?

function confirm(){ 
  var tel=$tel.val();//获取页面中登录名和密码 
  var pwd=$pwd.val(); 
  if(tel==""|| pwd==""){//判断两个均不为空(其他判断规则在其输入时已经判断) 
    alert("手机号密码均不能为空!") 
    return false; 
  }else{//以上均符合要求,则调用登录esb接口 
     $.ajax({ 
       url:config.baseServerUrl + '/account/login',//相对应的esb接口地址
       type:'post',  
       data:{mobile:tel,password:pwd},//向服务器(接口)传递的参数
       success:function(data){//服务器(接口)返回来的数据
         if(data.success){//如果返回来的信息说明提交的信息为正确的 
           var customerId = data.attr.customerInfo.id;//将数据中用户信息的ID赋值给变量 
           sessionStorage.customerId = customerId;//将变量存储到本地sessionStorage中,并且value为customerID 
           window.location.href='http://localhost/index.html';//正确登录后页面跳转至 
         } 
         else{//如果返回来的信息说明提供的信息为错误的 
           if(tel != data.tel){//判断是用户名还是密码错误,提示相应信息 
             alert(data.message); 
             $tel.val(""); 
             $pwd.val(""); 
             return false; 
            } 
            if(pwd != data.pwd){ 
             alert(data.message); 
             $pwd.val(""); 
             return false; 
            } 
         } 
       } 
    }) 
  } 
}

登录页面,人们一般习惯输完信息后,直接点击enter免除手动点击登录按钮,则js代码如下:

//判断是否敲击了Enter键 
$(document).keyup(function(event){ 
    if(event.keyCode ==13){ 
      $("#login").trigger("click"); 
    } 
});
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值