2015-07-06 3 views
0

Я хочу иметь два метода $.get, которые запускаются один за другим, я искал его, кажется, что есть ответы, но все они не упоминают о возможности доступ к ответу JSON.JQuery: последовательные вызовы AJAX с доступом к обоим ответам

Первое, что я попытался укладывал вызов внутри функции обратного вызова другого, как это:

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 не получает excuted и json2 = undefined

так, как я могу иметь последовательный ход $.get ajax-запросы с доступом к обоим их ответам во второй функции обратного вызова?

+0

Можете ли вы опубликовать jsfiddle с тем, что вы видите? – OceansOnPluto

ответ

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 
     }); 
    }); 
} 
+0

Глобального не требуется. – jfriend00

0

По-видимому, второй файл был пуст. поэтому теперь я знаю, что если второй файл пуст, функция обратного вызова не будет выполнена.