我有这个代码加载到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>");
}
});
});
如果他不是 - 它说“你好,客人”;如果他是 - 它说“Hello, username ”,其中username是此函数中的result
。我需要的是在这部分中创建用户名:$("#divGreeting").html("Hello, "+result+"!");
是一个链接,它导致另一个带有userID的页面,我没有。像这样:$("#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;
它从文件BusinessLogic.php调用函数getUserID()
,它具有以下功能:
function getUserID()
{
$arr = select("SELECT userID FROM users WHERE username='".$_SESSION["username"]."'");
return $arr[0]["userID"];
}
我被告知我必须使用回调,但我不知道该怎么做,如何编写这个回调。我迷失在这里......
请帮忙吗?
答案 0 :(得分: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>!");
});
});
答案 1 :(得分:0)
使用您的ajax响应的代码
$("#divGreeting").html("Hello, <a href='userpage.html?userid="+getUserID()+"'>"+result+"</a>!");
必须在ajax函数的回调中。
答案 2 :(得分:0)
AJAX查询不会阻止函数的执行,所以当你调用getUserID时,它会初始化AJAX调用并返回undefined,因为没有设置return。像建议的那样添加返回也不会起作用,因为你要做的就是返回别的东西,jQuery可能。
您必须在生成任何内容之前获取ID。因此,当你要求输入用户名并且你得到一个用户名而不是直接显示东西时,你会进行AJAX调用以获取id,然后回调那个渲染你的HTML。
答案 3 :(得分:0)
您已经在使用回调。
$ .getJSON语法为:
jQuery.getJSON( url [, data] [callback] )
{
括号,但只有4个}
括号。也许
这是错误吗?yourdomain.com/INC/API.php?command=getUserName
个?如果
该文档为空,错误在您的PHP文件中,如果出现用户名,则问题出在您的jQuery代码中。