异步检查会话cookie

时间:2014-12-24 21:58:19

标签: javascript jquery

我有一个函数,在用户添加编辑数据之前,通过ajax调用检查是否存在cookie会话 问题是,调用返回值的时间太长,所以它总是返回:undefined 有没有办法运行这个功能,以便及时返回数据?谢谢你的阅读。

function checkSession(){
  $.get('/check_session.php',function(data){
      if(data == "loggedOut"){
         return "lo";
  }
}

function doSomething(){ //check if your logged in
   if(checkSession() == "lo"){ //always returns:undefined
      alert('your have been logged out');
   }else{ //do stuff

 }
}

1 个答案:

答案 0 :(得分:0)

1.服务器的响应时间不是问题。您已将return语句置于回调函数下,该函数将在$.get完成后异步调用,因此基本上checkSession()将永远不会返回您的预期值。

2.您有一些选项可以解决您的问题:使用$.deferred或将您的ajax方法转换为同步调用。我亲自选择第二个。

function checkSession(){
    return $.ajax({
        type: "GET",
        url: YOUR_URL,
        async: false
    }).responseText == "loggedOut" ? "lo" : "something";
}