小编典典

可以在其外部使用ajax respone吗?

ajax

有什么办法在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

更新

没有办法使响应在全球范围内可用吗?


阅读 253

收藏
2020-07-26

共1个答案

小编典典

没有; $.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实际填充值的上下文是在$.postline之后提供的回调函数中 response = data_response;。如果要在脚本的任何其他阶段使用它,则必须首先检查其值;像这样的东西:

if (response !== null)
{
    console.log(response);
}

请注意,如果您在$.post调用后直接输入该代码,它将不会执行任何操作。仅当它在POST请求完成后在其他异步回调(可能是某种UI交互事件)中执行时才有用。

2020-07-26