JQuery:连续的AJAX调用可以访问这两个响应

时间:2015-07-06 06:04:27

标签: javascript jquery ajax

我希望有两个$.get方法一个接一个地运行,我已查找过,似乎有一些答案,但所有人都没有提到访问JSON响应。

我尝试的第一件事是在另一个回调函数中调用这样的调用:

var url1 = "json_example1.json";
var url2 = "json_example2.json";
var callback1 = function (response1) {$.get(url2,callback2);}
var callback2 = function (response2) {console.log(response1,response2)}

第二个回调函数甚至无法运行!

我也试过像这样使用when..this

var url1 = "json_example1.json";
var url2 = "json_example2.json";
var callback1 = function (response1) {alert("first callback!")}
var callback2 = function (response2) {console.log(response1,response2)}
$.when($.get(url1,callback1)).then($.get(url2,callback2));

它抛出一个错误,表示没有定义response1。

即使我将响应放在这样的全局变量中:

var json1,json2;
var url1 = "json_example1.json";
var url2 = "json_example2.json";
var callback1 = function (response1) {json1 = response1};
var callback2 = function (response2) {json2 = response2;console.log(json1,json2)};
$.when($.get(url1,callback1)).then($.get(url2,callback2));

由于某种原因,callback2功能无法获得和json2 = undefined

那么如何在第二个回调函数中连续运行$.get个ajax请求并访问它们的响应?

2 个答案:

答案 0 :(得分:1)

您需要创建一个全局变量来存储来自第一个请求的数据,然后您就可以使用该数据了。

somefunction = function() {
    var response1;

    $.get('/path_to_somewhere1', function(data) {
        // Store just given response
        response1 = data;

        $.get('/path_to_somewhere2', function(data) {
            alert(response1); // here's response from the first request
            alert(data); // here's response from the second request
        });
    });
}

答案 1 :(得分:0)

显然第二个文件是空的。所以现在我知道如果第二个文件为空,则不会执行回调函数。