PhoneGap移动端开发:新手求助JavaScript登出函数异常问题
你的PhoneGap登出函数问题分析与修复
首先,咱们来拆解你这段logout函数里的几个明显问题:
- 未定义的
data变量:第一行localStorage.setItem("data", data);里的data根本没声明,这会直接抛出引用错误,导致整个函数卡死,后面的清除存储和页面跳转都执行不了。而且登出逻辑里根本不需要往localStorage存东西,这行完全是多余的甚至错误的操作。 - localStorage数据处理错误:
localStorage.getItem("data")获取到的是字符串(如果之前存的是对象,应该是JSON序列化后的字符串),你直接调用user.rows.item(0).name会报错,因为字符串没有rows属性。而且这行代码只是获取了name但没有任何实际用途,属于无效代码。 - 流程逻辑混乱:正确的登出流程应该是清除用户数据,然后跳转登录页,你的代码先做了错误的存储操作,还加了一段无效的取值代码,很容易阻断后续操作。
修正后的登出函数
function logout() { // 直接清除存储的用户数据 localStorage.removeItem("data"); // 跳转到登录页 window.location.href = "signin.html"; }
如果之前你存储的是序列化后的用户JSON对象(比如localStorage.setItem("data", JSON.stringify(userData))),登出时只需要移除这个key就足够了,不需要额外的取值操作。
另外,你的HTML调用部分可以优化一下,避免点击链接时的默认跳转行为(因为你已经用window.location.href跳转了),可以改成这样:
<a class="btn btn-primary btn-lg btn-block" onclick="logout(); return false;" href="javascript:void(0)"> <span><i class="fa fa-sign-out-alt"></i></span> Logout </a>
这样可以防止浏览器默认的链接跳转干扰你的页面跳转逻辑。
内容的提问来源于stack exchange,提问作者Nazish Butt
相关产品推荐
相关产品推荐

