0

PHP コード ブロックからデータ オブジェクトを返す jquery post 関数があります。

$.post("get_chat_history.php", {
    item_id : item_id,
    participant_1 : participant_1,
    participant_2 : participant_2
}, function(data) {
    alert(data);

    return data;

});

これは、別の JavaScript ファイルの次の関数から呼び出されます

var data = getChatHistory(current_member_id,item_global["user"]    ["member_id"],item_global["id"]);
alert(data);

$.post 内では、alert(data) が json 形式で正しい値をスローしますが、呼び出し元の関数に返された同じ値をテストすると、未定義になります。

この関数をジェネリックにして他の場所から呼び出し可能にしたいので、私が見逃しているものはありますか??

よろしく、

サパトス

4

2 に答える 2

1

これは、この関数が asyncronim を実行し、無名関数にデータを返すためfunction(data) {}です。コールバックを使用します。

次に例を示します。

function getFoo(callback){
    $.get('somepage.html', function(data){
        callback(data)
    })
}
getFoo(function (data){
     // do something with data
})​
于 2012-08-13T11:26:30.447 に答える
0

あなたが直面している問題は、jQuery.post が非同期であることです。getChatHistory が呼び出されたとき、サーバーからの応答をまだ受信していないため、undefined.

getChatHistoryこれが機能するためには、サーバーに渡す必要があるデータを取得する関数として実装し、「成功」部分がトリガーされたときに実行する関数として実装します。

コールバックの詳細については

于 2012-08-13T11:30:16.937 に答える