无法返回发布ajax请求的数据

时间:2013-02-27 01:47:35

标签: return-value jquery-post postdata

我目前有以下代码:

function Parse_Error(ErrMsg) {

$.post("ajax/errormsg.php", {
    errmsg: ErrMsg} 
    , function(data) {
    alert (data);
                return (data);
});
}

警报会显示正确的消息,但该功能不会返回消息。该函数保持返回“未定义”但警报工作正常。我试过添加以下内容:

var tmp = data;
return tmp;

没有成功..我哪里出错?

1 个答案:

答案 0 :(得分:0)

问题是对于Parse_Error函数没有返回return语句。它返回所谓的匿名函数,你声明(function(data){...}),它将数据提供给JQuery,它实际上忽略了它。相反,你需要做这样的事情:

// your code that does the query
do_error_query('The Error Message');

function do_error_query(ErrMsg) {
    $.post("ajax/errormsg.php", {errmsg: ErrMsg} , function(data){

        alert(data);
        // here you need to call a function of yours that receives the data.
        // executing a return statement will return data to jquery, not to the calling
        // code of do_error_query().
        your_function(data);

    });
}

function your_function(data){
    // process the data here
}

问题是对do_error_query()的调用完成之前,PHP页面的结果甚至回来了。所以结果无法返回。换句话说,your_function(data)返回后会调用do_error_query()。我希望这是有道理的。

实际上,do_error_query()仅仅是设置一个事件处理程序。它无法返回值,因为事件尚未完成。这就是事件处理程序your_function(data)的用途。它处理事件,从PHP页面返回数据。虽然活动尚未完成,do_error_query()将很快完成。