【发布时间】:2011-08-15 04:08:38
【问题描述】:
我已经研究并玩了很多,但我很难过。本质上,我想设置我的网站,以便它可以检测用户是否“登录”,从而改变它的外观:删除“登录”链接并用“退出”链接替换它,等等。
出于测试目的,我开始我的 index.html 页面:
<?php
session_start();
$_SESSION["username"]="javaman";
?>
接下来,我从 jquery document.ready 中调用我的设置函数:
$(document).ready(function() {
setup_page();
};
设置函数如下:
function setup_page()
{
var username = get_user();
//check for error
var index = username.indexOf("error");
//if not an error
if(username.length > 0 && index == -1)
{
//do the jquery calls to hide/show links
}
}
get_user 函数看起来像:
function get_user()
{
var result;
$.post("./session.php", {action : "get", key : "username", value : "val"}, function(data){
result = data;
});
return result;
}
session.php 是一个简单的应用程序,它接受 3 个 post 值并希望吐出正确的结果,我遇到的问题是 js 结果变量通常是未定义的,尤其是当我通过 IE dev 调试时工具栏。不过FF好像还可以。我是否以正确的方式使用回调?我尝试将 alert() 函数放在任何地方,以找出代码出错的地方,但这也无济于事,因为警报经常说结果未定义。同时,似乎 get_user 调用了 post 函数,但堆栈立即返回并且永远不会到达 return 语句,直到 get_user 返回一个值......未定义。我相信我误解了这里的代码流。我习惯了 C 语言,其中一个函数在逻辑上跟随另一个函数。在这种情况下,我将回调解释为:
int i = callback_function(post("一些数据"));
所以在我看来,帖子完成了它的动作,然后调用另一个函数,或者至少执行另一个动作,然后完成,然后 get_user 可以返回它的值。
或者是操作顺序:post、get_user、callback?
...在西雅图迷茫
【问题讨论】:
-
我不会全部使用js,因为它不安全,用php检查会话,并适当地构建页面。
标签: php jquery session post callback