0

我在 document.ready 上加载了这段代码,它检查用户是否登录:

//Checking if the user is logged in or not
$(function(){
$.getJSON("inc/API.php", {command : "getUserName"},
    function(result){
        if(result==null){
            $("#divGreeting").html("Hello, guest!");
        }
        else {
            $("#divGreeting").html("Hello, "+result+"!");
            $("#divHeader").html("Hello, "+result+"! <a href='javascript:logout()'>Logout</a>");
        }
    });

});

如果他不是 - 它会说“你好,客人”;如果他是 - 它说“你好,用户名”,其中用户名是result这个函数中的。我需要的是在这部分中设置用户名:$("#divGreeting").html("Hello, "+result+"!");成为一个链接,它指向另一个带有用户 ID 的页面,而我没有。像这样:$("#divGreeting").html("Hello, <a href='userpage.html?userid="+HAVE TO GET THE ID HERE+"'>"+result+"</a>!");

我尝试使用此功能(它确实得到:

function getUserID(){
    $.getJSON("inc/API.php",
    {
        command : "getUserID"
    },
    function(result){
        return result;
    });
}

并这样称呼它:$("#divGreeting").html("Hello, <a href='userpage.html?userid="+getUserID()+"'>"+result+"</a>!");,但这不起作用,我没有得到任何结果,除了undefined(我知道它与异步AJAX有关)。

这是 API.php 的内容:

case "getUserID":
    echo getUserID();
    break;

它调用getUserID()文件 BusinessLogic.php 中的函数,该文件具有以下功能:

function getUserID()
{
$arr = select("SELECT userID FROM users WHERE username='".$_SESSION["username"]."'");
return $arr[0]["userID"];
}

有人告诉我我必须使用回调,但我不知道该怎么做,如何编写这个回调。我在这里迷路了...

请帮忙?

4

4 回答 4

1
$.getJSON("inc/API.php", {command : "getUserID"}, function(result){
    var id = result;
    $.getJSON("inc/API.php", {command : "getUserName"}, function(result){
         $("#divGreeting").html("Hello, "+result+"!");
         $("#divHeader").html("Hello, <a href='userpage.html?userid="+id+"'>"+result+"</a>!");
    });
});
于 2012-04-12T19:45:07.827 回答
0

使用您的 ajax 响应的代码

$("#divGreeting").html("Hello, <a href='userpage.html?userid="+getUserID()+"'>"+result+"</a>!");

必须在 ajax 函数的回调中。

于 2012-04-12T19:47:23.750 回答
0

AJAX 查询不会阻止函数的执行,因此当您调用 getUserID all 时,它会初始化 AJAX 调用并返回未定义,因为没有设置返回。像建议的那样添加 return 也不起作用,因为您要做的就是返回其他东西,可能是 jQuery。

您必须先获取 id,然后才能生成任何内容。因此,当您询问用户名并且您得到一个而不是立即显示内容时,您执行 AJAX 调用以获取 id,然后回调呈现您的 HTML。

于 2012-04-12T19:53:07.487 回答
0

您已经在使用回调。

$.getJSON 语法是:

jQuery.getJSON( url [, data] [callback] )
  • 您的代码中有 5 个{括号,但只有 4 个}括号。也许这是错误?
  • 如果您 yourdomain.com/INC/API.php?command=getUserName在浏览器中输入内容,您会看到什么?如果文档为空,则错误出在您的 PHP 文件中,如果出现用户名,则问题出在您的 jQuery 代码中。
  • 你没有告诉我们如果你执行 javascript 代码会发生什么。出现什么?“你好用户名”,“你好客人”还是什么都没有?
于 2012-04-12T19:58:10.003 回答