0

我目前有以下代码:

function Parse_Error(ErrMsg) {

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

警报将向我显示正确的消息,但该函数不返回该消息。该函数不断返回“未定义”,但警报工作正常。我尝试添加以下内容:

var tmp = data;
return tmp;

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

4

1 回答 1

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()但早就结束了。

于 2013-02-27T02:18:27.373 回答