0

我正在尝试使用 jQuery.post API 外部回调的返回值(响应).. 那怎么做?

jQuery.post( ajaxurl, 'action', function( response ) 
{
console.log(response); // this comes back with "working"

// i tried this responseVal = response;  but didn't work            

}); 

alert(response); // this will be undefined.

所以我希望警报能够访问响应....是的,我知道我可以在回调内部轻松地提醒它,但我的应用程序需要在外部访问它。

提前致谢。

4

2 回答 2

1

response调用警报时超出范围。

以下代码段执行一个检查是否已设置的函数,result如果已设置,则清除间隔和警报result

var result, interval;

jQuery.post( ajaxurl, 'action', function( response ) 
{
    result = response;
}); 

interval = setInterval(function(){
    if(result !== undefined) {
        clearInterval(interval);
        alert(result); 
    }
}, 1000);
于 2012-07-04T02:19:33.280 回答
1

该回调是异步的,因此您的 js 中的执行无需等待设置响应即可继续。很可能在火灾发生时responseVal = response不会发生alert(responseVal),因此 responseVal 将未设置。

您可以通过初始化responseVal一些明显“未设置”的值、执行 ajax 调用、提醒、在脚本中浪费时间(如while(responseVal == "not set") { i++; })然后再次提醒来测试这一点。

我知道你的问题说你不能response在成功回调中使用你需要的任何东西,但我建议你更加努力地弄清楚如何去做,否则你将处理setInterval(...)恶作剧ala @Xander's answer或设置async=false选项在jQuery.ajax(...)(连同将该请求发布并设置网址等)并阻止执行。

于 2012-07-04T02:29:30.263 回答