在第二个ajax调用中使用ajax成功数据作为变量

时间:2014-02-09 14:22:10

标签: javascript php jquery ajax

我有一个脚本可以进行两次ajax调用 - 第二次调用包含在第一次成功处理程序中。

但是我需要使用第一个成功处理程序中捕获的数据作为另一个变量来传递第二个ajax调用,然后在正在进行服务器端处理的php文件中使用该变量。

这对我来说都很新鲜,所以我希望这有点道理。如果有人能提供帮助那就太好了。

$.ajax({
    type: 'POST',
    timeout: 500000,
    url: 'processone.php',
    data: $('form').serialize(),
    success: function (data) {
        alert("success data from processone is " + data);
        var lead_id = data;

        $.ajax({
        type: 'POST',
        timeout: 500000,
        url: 'processtwo.php?lead_id'+lead_id,
        data: $('form').serialize(),
        success: function (data2) {
            alert("success data from processtwo is " + data2)
        }
    });
    }
});

3 个答案:

答案 0 :(得分:1)

我认为你在代码中丢失了一个“=”符号:

url: 'processtwo.php?lead_id='+lead_id,

答案 1 :(得分:0)

您可能希望将这些函数拆分为两个单独的函数,并允许将参数传递给第二个函数。这不是你问题的一部分,但应该让它更容易阅读。第二个过程似乎在url参数中缺少等号,这将导致它不起作用

function processOne() {
$.ajax({
    type: 'POST',
    timeout: 500000,
    url: 'processone.php',
    data: $('form').serialize(),
    success: function(data) {
        //alert("success data from processone is " + data);
        //console logs are better to use when debugging data
        console.log('SUCCESS DATA', data);
        var lead_id = data;
        processTwo(lead_id);
    }
});

}

function processTwo(lead_id) {
$.ajax({
    type: 'POST',
    timeout: 500000,
    url: 'processtwo.php?lead_id=' + lead_id,
    data: $('form').serialize(),
    success: function(data2) {
        alert("success data from processtwo is " + data2);
    }
});

}

如果您仍未收到任何信息,请确保数据直接返回lead_id。 AJAX调用通常返回JSON数据,所以它很可能像data.lead_id之类的东西。警报对于显示此信息没有用,因此您可以使用控制台日志console.log('SUCCESS DATA', data)来深入了解返回数据。

答案 2 :(得分:0)

鉴于对我的评论的回复,并假设从第一个AJAX调用返回的data是一个简单的字符串值(如果不是,你仍然可以在这里使用代码来看看你需要如何做你需要做的事情)。 jQuery的serialize()返回一个字符串(请参阅https://api.jquery.com/serialize/),以便您可以追加到该字符串。

此外,在制作网址时,您错过了=符号,因此如果您尝试将lead_id作为GET var,那么这就是它无效的原因。

$.ajax({
    type: 'POST',
    timeout: 500000,
    url: 'processone.php',
    data: $('form').serialize(),
    success: function (data) {
        alert("success data from processone is " + data);
        var lead_id = data;

        $.ajax({
        type: 'POST',
        timeout: 500000,
        // you are missing the equals sign here, which is why this doesn't work as a GET
        url: 'processtwo.php?lead_id'+lead_id,
        // here we tack on a lead_id variable to the serialized form and give
        // it the value you got back from query 1
        data: ($('form').serialize() + "&lead_id=" + lead_id),
        success: function (data2) {
            alert("success data from processtwo is " + data2)
        }
    });
    }
});