我有一个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
答案 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
作为一个函数,它将您需要传递给服务器的数据,以及一个在触发“成功”部分时执行的函数。