我目前有以下代码:
function Parse_Error(ErrMsg) {
$.post("ajax/errormsg.php", {
errmsg: ErrMsg}
, function(data) {
alert (data);
return (data);
});
}
警报会显示正确的消息,但该功能不会返回消息。该函数保持返回“未定义”但警报工作正常。我试过添加以下内容:
var tmp = data;
return tmp;
没有成功..我哪里出错?
答案 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()
将很快完成。