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

时间:2012-12-07 19:58:30

标签: javascript jquery

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

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

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

    var cData = $.parseJSON(data);

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

      var cID = v.id;  

  });

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

任何帮助都会很棒。 感谢

更新:

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

var savedCount;

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

    savedCount = 1;
    alert(savedCount);

});

alert(savedCount);

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

2 个答案:

答案 0 :(得分:7)

只需在$.post来电之外声明您的变量:

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

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

修改 如果您需要进行同步(“阻止”)$.post来电,则可以。从the docs获取asynch函数参数:

  

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

干杯

答案 1 :(得分:1)

您可以存储整个数据对象,而不是循环并将变量重置为其他值。然后,您可以访问外部的所有数据。您还应该在$.post之外定义变量,以便您可以访问它

var cID;
$.post('URL', { }, function(data) {    
    cID = $.parseJSON(data);             
});