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

すでにコールバックを使用しています。

$.getJSON 構文は次のとおりです。

jQuery.getJSON( url [, data] [callback] )
  • コードには 5 つ{のブラケットがありますが、ブラケットは 4 つしかありません}。多分これはエラーですか?
  • yourdomain.com/INC/API.php?command=getUserNameブラウザに入力すると何が表示 されますか? ドキュメントが空の場合、エラーは PHP ファイルにあり、ユーザー名が表示されている場合、問題は jQuery コードにあります。
  • JavaScriptコードを実行するとどうなるか教えてくれませんでした。何が現れる?「こんにちはユーザー名」、「こんにちはゲスト」、または何もありませんか?
于 2012-04-12T19:58:10.003 に答える
0

ajax レスポンスを使用するコード

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

ajax 関数のコールバックに含まれている必要があります。

于 2012-04-12T19:47:23.750 に答える
0

AJAX クエリは関数の実行をブロックしないため、getUserID を呼び出すと、AJAX 呼び出しが初期化され、戻り値が設定されていないため undefined が返されます。提案されたように return を追加しても機能しません。おそらく jQuery など、何か他のものを返すだけです。

何かを生成する前に、ID をフェッチする必要があります。したがって、ユーザー名を要求し、すぐに表示する代わりにユーザー名を取得すると、AJAX 呼び出しを実行して ID を取得し、そのコールバックで HTML をレンダリングします。

于 2012-04-12T19:53:07.487 に答える