进入index.jsp页面的方式有两种,一种是通过登录跳转到index.jsp,这时候会在session中写入一个attribute属性。第二种是直接进入index.jsp页面,这时候session中没有内容。    在index.jsp页面要根据session中的内容判断用户是否在登录状态,如果是的话,页面上有个地方会显示“xxx,欢迎来到本网站|退出登录”,如果不在登录状态则同一位置会显示“登录|注册”。    网页上显示内容通过jquery很容易实现,但是具体显示两者中的哪一个则要去获取session中的值(包括判断session中有没有值)来判断。    有没有比较简洁的方式实现这一功能呢?

解决方案 »

  1.   

    就是jquery如何经过判断session中的值来控制显示的内容
      

  2.   

    $(function(){
    $(".islogin").click(function(e){
    $.ajax({
    type:"GET",
    url:"IsLoginAction",
    success:function(data){
    if($.trim(data)=="false"){
    alert(123);
    }
    }
    });
    e.preventDefault();
    });
    });这段代码不是直接针对我的问题的,但是和我的问题思路是一致的。islogin是定义在a标签上的类,ajax返回true或者false值,如果返回true想让a标签正常跳转,否则就禁止a标签的默认行为。现在代码中的alert(123)能正常输出,e.preventDefault()这句也能正常起作用(就是禁止a标签跳转),但是把e.preventDefault()剪切到alert(123)的位置就不起作用了。
    求解决方案。
      

  3.   

    自己试了很久,问题的症结在于ajax中返回的数据(data)无法读取到ajax外面做判断条件,而如果在ajax内部判断,那么e.preventDefault()甚至是直接return false在ajax内又不发挥作用(写在ajax外面就可以)!
    这个问题有办法解决么,如果没有,通过什么方法能实现相同的效果!
      

  4.   

    js中定义一个全局变量obj,将ajax返回的data赋值给obj,这样不就将数据拿出来了吗,其他方法需要判断返回数据,就调用obj。
      

  5.   

    在ajax内部把data赋值给obj可以alert出来,但是到了ajax外部alert(obj)显示的是初始值,也就是ajax对obj的赋值出来ajax就读不到了。
      

  6.   

    用了个笨方法解决了,在jsp页面设置一个隐藏域,把ajax读到的数据写入到这个区域中,然后在后面用.text()把它读出来做判断条件。
    哎,怎么没人回答呢,是问题问的太没水平了么?只能就这样结帖了!
      

  7.   

    关于$.ajax内部e.preventDefault()不起作用的分析。
    自己纠结了好久终于找到了问题所在,不是e.preventDefault()写在$.ajax内部失效,而是因为$.ajax默认的是异步处理,e.preventDefault()写在$.ajax内部的时候,$.ajax内部代码的执行和外部代码的执行是不分先后顺序的,也就是谁处理的快,谁就先执行(也可以简单理解为同步执行),所以在e.preventDefault()执行之前,外部的a标签已经实现跳转了,效果和e.preventDefault()没有执行一样。
    解决方案是把$.ajax的async参数设为false,使得所有代码按照先后顺序执行。但是这个是$.ajax不提倡的,这里实在是没有别的办法了。