如何获取jquery post函数的返回值?

时间:2012-02-13 12:24:41

标签: javascript jquery post

function readMemory(ptr, size)
{
    $.post("readMemory.php", { ptr : ptr, size : size}, function(data)
    {

    });     

    //return "data"
}

嗨,我只想获取数据变量作为readMemory函数的返回值。有没有正确的方法来做到这一点?

4 个答案:

答案 0 :(得分:3)

不正确的方式是将其设为同步请求(我认为需要使用较低级别ajax method而不是post)。

正确的方法是忘记返回任何内容并使用你的回调函数来做你需要处理的数据。

答案 1 :(得分:3)

最好的办法是使用回调:

function readMemory(ptr, size, callback)
{
    $.post("readMemory.php", { ptr : ptr, size : size}, function(data)
    {
        callback(data, ptr, size);
    });     
}

(请注意,我们已将ptrsize传递给callback以及data;这通常是一种很好的做法。)

所以您希望使用readMemory这样的代码:

var data = readMemory(ptr, 100);
doSomethingWith(data);
doSomethingElseWith(data);

...将会是这样的:

readMemory(ptr, 100, function(data) {
    doSomethingWith(data);
    doSomethingElseWith(data);
});

这是因为您的readMemory功能启动 POST操作;它在操作完成之前返回(操作是异步)。

答案 2 :(得分:2)

AJAX是异步的。这意味着,当您的readMemory函数返回时,结果可能尚未可用。

唯一可以可靠地使用AJAX调用结果的地方是成功回调:

function readMemory(ptr, size)
{
    $.post("readMemory.php", { ptr : ptr, size : size}, function(data)
    {
        // here and only here you can use data
    });     

    // at this stage there is no way to get the data 
}

所以正确的方法是不从你的函数中返回任何内容,并对那些结果内部回调做任何你打算做的事情。

答案 3 :(得分:0)

var tabela;

function doSomethingWith(response) 
{    
 tabela = response;
}

function get_more(id)
{        
    var a =  id + 11;
    var b =  id + 21;

    $.post("../php/empresas/empresas_tab.php",{id:a, _id:b},function(data){
         doSomethingWith(data);
        $("#tabEMP").html(data);
        //console.error(data);
    });
}