不; $.post
异步执行,因此当您调用 时console.log
,AJAX 请求仍在运行,尚未产生响应。这就是回调函数的目的:提供在请求完成后运行的代码。如果您console.log
进入回调函数,它应该可以工作:
$.post('do.php', { OP: "news_search", category: cat_id },
function(data_response){
var response = data_response; //I need to access this variable outside of $.post()
console.log(response);
}
}, "json");
更新:如果您希望响应数据全局可用,您可以在全局范围内声明变量,如下所示:
var response = null;
$.post('do.php', { OP: "news_search", category: cat_id },
function(data_response){
response = data_response;
console.log(response);
}
}, "json");
当然,唯一可以确定response
实际填充了值的上下文是在
$.post
line 之后提供的回调函数response = data_response;
。如果您想在脚本的任何其他阶段使用它,那么您必须先检查它的值;像这样的东西:
if (response !== null)
{
console.log(response);
}
请注意,如果您直接在$.post
调用之后放置此代码,它将不会做任何事情;它只有在 POST 请求完成后执行时才有用,在其他异步回调中(可能是某种 UI 交互事件)。