我正在尝试使用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.
所以我希望警报可以访问响应....是的我知道我可以在回调中轻松提醒它,但我的应用程序需要访问外部。
提前致谢。
答案 0 :(得分: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);
答案 1 :(得分:1)
该回调是异步的,因此在js中执行而不等待响应被设置。在responseVal = response
触发时,alert(responseVal)
很可能不会发生,因此将取消设置responseVal。
您可以通过将responseVal
初始化为某些明显的“未设置”值,执行ajax调用,警报,在脚本中浪费时间(如while(responseVal == "not set") { i++; }
)然后再次发出警报来测试。
我知道你的问题说你无法在成功回调中使用response
所需的任何内容,但我建议你更加努力地弄清楚如何这样做 else你将处理setInterval(...)
shenanigans ala @ Xander的回答或在jQuery.ajax(...)
中设置async=false
选项(以及将该请求设为帖子并设置网址等)并阻止执行