来自函数的return对象是从jquery中的$ .post中定义的

时间:2012-08-13 11:23:37

标签: javascript jquery

我有一个jquery post函数,它从php代码块返回一个数据对象。

$.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格式抛出正确的值,但是当我测试返回给调用函数的相同值时,我得到了未定义。

我是否缺少一些东西,因为我想保持这个函数的通用性并且可以从其他地方调用?

此致

Sapatos

2 个答案:

答案 0 :(得分:1)

那是因为这个函数运行asyncronim并将数据返回给匿名函数function(data) {}。使用回调。

以下是示例:

function getFoo(callback){
    $.get('somepage.html', function(data){
        callback(data)
    })
}
getFoo(function (data){
     // do something with data
})​

答案 1 :(得分:0)

您面临的问题是jQuery.post是异步的。当调用getChatHistory时,它尚未收到服务器的回复,因此它是undefined

为了实现这个目的,我将实现getChatHistory作为一个函数,它将您需要传递给服务器的数据,以及一个在触发“成功”部分时执行的函数。

For more on callbacks