Как объединить результаты двух вызовов ajax (или get) с jQuery - PullRequest
1 голос
/ 02 февраля 2011

У меня есть плагин jquery, который может справиться с функцией источника данных

var plugin = $element.plugin({
   data: function (callback) {
      // TODO
   }
});

Это довольно просто, если я использую только один источник данных ...
Но ... я 'Мне нужно два источника данных

Что я пробовал до сих пор:

var plugin = $element.plugin({
   data: function (callback) {
      var path1 = 'foo1.json';
      var path2 = 'foo2.json';
      var resultOfPath1 = GetContent(path1);
      var resultOfPath2 = GetContent(path2);
      var result = /* this is where i am stuck !! */;
      callback(result);
   }
});

function GetContent(path) {
   // this is where i am stuck!!
   // which method to take? i would like to force a sync. request here
}

Две мои проблемы с этим кодом:

  1. Как объединитьдва json-списка?
  2. Как заставить синхронизироваться.просьба (или у кого есть идея получше?)

Ответы [ 3 ]

2 голосов
/ 02 февраля 2011
var plugin = $element.plugin({
   data: function (callback) {
      var path1 = 'foo1.json';
      var data1 = {};
      var path2 = 'foo2.json';
      var data2 = {};
      $.getJSON(path1, data1, function (result1) {
         $.getJSON(path2, data2, function (result2) {
            var result = new Array();
            jQuery.each(result1, function (index, element) {
               result.push(element);
            });
            jQuery.each(result2, function (index, element) {
               result.push(element);
            });
            callback(result);
         }
      });
   }
});
1 голос
/ 02 февраля 2011

попробуйте это:

var plugin = $element.plugin({
   data: function (callback) {
      var 
         paths = ['foo1.json', 'foo2.json'],
         result = [],
         countState = 0;

       $.each(paths, function() {
           var dataSend = {}; //??
           $.getJSON(this, dataSend, function(data) {

              jQuery.each(data, function (i, el) {
                 result.push(el);
              });

              countState++;
              if (countState == paths.length)
                 callback(result); 
           });
       });


   }
});
0 голосов
/ 02 февраля 2011

да ...

имеет глобальную переменную и отправляет данные, полученные из ajax.

var queue = [];

$.ajax({
url:'blabla',
success:function(data){
  queue += data
}
});
$.ajax({
url:'blabla2',
success:function(data){
  queue += data
}
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...