有什么办法在data_response外面使用$.post()吗?
data_response
$.post()
这是我使用的代码的一部分:
$.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() } }, "json"); console.log(response); //response is not defined, is what I get for now
没有办法使响应在全球范围内可用吗?
没有; $.post异步执行,因此当您调用时console.log,AJAX请求仍在运行,尚未产生响应。这是回调函数的目的:提供请求完成 后 要运行的代码。如果console.log进入回调函数,它应该可以工作:
$.post
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实际填充值的上下文是在$.postline之后提供的回调函数中 response = data_response;。如果要在脚本的任何其他阶段使用它,则必须首先检查其值;像这样的东西:
response
response = data_response;
if (response !== null) { console.log(response); }
请注意,如果您在$.post调用后直接输入该代码,它将不会执行任何操作。仅当它在POST请求完成后在其他异步回调(可能是某种UI交互事件)中执行时才有用。