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 回答