如何将变量从ajax函数传递给另一个ajax函数?

时间:2012-09-16 16:29:00

标签: jquery

我想知道如何将值从ajax函数传递给另一个ajax我已经尝试过这段代码,但它不起作用。任何人都知道如何以正确的方式做到这一点?谢谢!

    $("#button").click(function(){
    var passedValue = '';
    $.ajax({
        url://
        type://
        success:function(data){
            if(typeof==="object"){
            for(var i=0;i<data.length;i++){
                passedValue = data[i]["passedThis"];
            }
        }
    }
    });
    $.ajax({
        data: { receivedPassed: passedValue;}
    });
});

2 个答案:

答案 0 :(得分:2)

这些请求是异步的,因此在第二个请求发送时passedValue尚未就绪。您可能希望按顺序发送它们:

$("#button").click(function() {
    $.ajax({
        url: //
        type: //
        success: function(data) {
            var passedValue;

            if(typeof (?) === "object") {
                for(var i = 0; i < data.length; i++) {
                    passedValue = data[i]["passedThis"];
                }

                $.ajax({
                    data: { receivedPassed: passedValue }
                });
            }
        }
    });
});

此外,您每次通过该循环都会覆盖passedValue。您的意思是+=而不是=,还是使用数组或什么?

答案 1 :(得分:1)

使用.then()链接AJAX调用,并使用.pipe()将第一次调用中的数据过滤到第二次调用:

$("#button").click(function() {
    $.ajax({
      url: //
      type: //
    }).pipe(function (data) {
      var passedValue = [];
      for (var i = 0; i < data.length; i++) {
        passedValue[i] = data[i]["passedThis"];
      }
      return passedValue;
    }).then(function (receivedPassed) {
      $.ajax({
        data: { receivedPassed: passedValue }
      }
    }
});

另请注意,jQuery 1.8中将弃用.success()回调:

  

弃用通知:jqXHR.success()jqXHR.error()和   jQuery 1.8中将弃用jqXHR.complete()个回调。