为响应jQuery post请求而设置的变量

Seq*_*zia 2 javascript jquery

我经常使用jQuery post请求.我知道当你在响应中工作时,变量有自己的范围.有没有一种很好的方法可以在响应中设置变量,但是在帖子之外可以使用这些变量?喜欢JS中的其他功能.

以下是我正在做的事情的示例:

 $.post('URL', { }, function(data) {

    var cData = $.parseJSON(data);

    $.each(cData, function(k, v) {

      var cID = v.id;  

  });
Run Code Online (Sandbox Code Playgroud)

所以我做的是我无法在帖子请求之外访问cID.有没有办法让这项工作?

任何帮助都会很棒.谢谢

更新:

这是我刚刚测试过的一个示例:

var savedCount;

$.post('/app/actions/countsAction.php', { call: "getCountFullByID", countID: countID}, function(data) {

    savedCount = 1;
    alert(savedCount);

});

alert(savedCount);
Run Code Online (Sandbox Code Playgroud)

我跑这个时收到2个警报.当$ .post中的警报被触发时,第一个是1,而第二个是未定义的.

Mad*_*aks 7

只需在$.post调用之外声明您的变量:

var cID;
$.post('URL', function(data) {
    var cData = $.parseJSON(data);
    $.each(cData, function(k, v) {
        cID = v.id;  
    });
});
Run Code Online (Sandbox Code Playgroud)

...不知道你正在尝试用它做什么,因为你循环收集并不断(重新)设置单个变量的值.如果需要跟踪所有变量,请考虑将值保存在(可能)数组中.

编辑 如果您需要进行同步("阻止")$.post呼叫,则可以.从该文档asynch功能参数:

默认情况下,所有请求都是异步发送的(默认情况下设置为true).如果需要同步请求,请将此选项设置为false.跨域请求和dataType:"jsonp"请求不支持同步操作.请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作.

干杯