我已經研究和發揮了一點點,但我很難過。本質上,我想設置我的網站,以便它可以檢測用戶是否「登錄」,從而改變它的外觀:刪除「登錄」鏈接並用「註銷」鏈接替換它,等等。
出於測試目的,我開始了我的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個崗位價值,並希望吐出正確的結果,我遇到的問題是,JS的結果變量往往是不確定的,尤其是當我通過調試IE開發工具欄。 FF雖然看起來不錯。我是否以正確的方式使用回調?我已經嘗試將alert()函數放到任何地方以找出代碼在哪裏搞砸,但這並不能幫助提醒人們說,結果是未定義的。與此同時,get_user似乎調用post函數,但堆棧立即返回,並且直到get_user返回值undefined後才返回return語句。我相信我誤解了這裏的代碼流。我習慣了C,在邏輯上一個函數跟在另一個函數之後。在這種情況下,我正在解釋回調實質上是這樣的:
int i = callback_function(post(「some data」));
所以在我看來,帖子完成它的動作,然後調用另一個函數,或者至少執行另一個動作,然後完成,然後get_user可以返回它的值。
或者是操作順序:post,get_user,callback?
......在西雅圖
混淆
我不會使用js al all,因爲它不安全,請使用php檢查會話,並適當地構建頁面。 – 2011-08-15 04:20:17