Я исследовал и играл немного, но я в тупике.По сути, я хочу настроить свой сайт так, чтобы он мог определять, вошел ли пользователь в систему, и, таким образом, изменять его внешний вид: удаление ссылки «Войти» и замена ссылки «Выход» и т. Д.
В целях тестирования я начал свою страницу 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 dev.FF, кажется, хорошо, хотя.Я правильно использую обратный вызов?Я пытался разместить функции alert () повсюду, чтобы выяснить, где искажается код, но это тоже не помогает, так как часто оповещение говорит, что результат не определен.Между тем, похоже, что get_user вызывает функцию post, но стек немедленно возвращается и никогда не попадает в оператор return, пока ПОСЛЕ того, как get_user не вернет значение .. undefined.Я считаю, что я неправильно понимаю поток кода здесь.Я привык к C, где логически одна функция следует за другой.В этом ключе я интерпретирую обратный вызов, по сути, как:
int i = callback_function (post ("некоторые данные"));
Так что, на мой взгляд, сообщение завершает свое действие и затем вызывает другую функцию или, по крайней мере, выполняет другое действие, а затем оно завершается, и затем get_user может возвращать его значение.
Или это порядокоперация: post, get_user, callback?
... запутался в Сиэтле