1

引数のためにこれを行う場合:

$.when(
    $.getJSON('http://myUrlOne/?format=json'),
    $.getJSON('http://myUrlTwo/?format=json')
).then(function () {
    // how can i merge the response from both json requests before processing them
});

どちらの URL も twitter api にありますが、1 つはキーワード検索で、もう 1 つは通常のユーザー タイムライン呼び出しです。

Twitter プラグインを修正して、ユーザー名タイムライン (最初の json リクエスト) と @username を検索して @username メンション (2 番目の json リクエスト) の両方を表示しようとしています。

2 つの URL を呼び出して処理する前にデータをマージするように修正したい現在の関数を参照してください。

  $.getJSON(build_api_url(), function(data){
    var tweets = $.map(data.results || data, extract_template_data);
    tweets = $.grep(tweets, s.filter).sort(s.comparator).slice(0, s.count);
    $(widget).trigger("tweet:retrieved", [tweets]);
  });

これは動作しません :

 $.when(
  $.getJSON(build_api_url(),
  $.getJSON(build_user_url()
  ).done( function(json1, json2) {
 var data = $.extend(json1, json2)
      // json1 and json2 represent the returned json, so just combine them as needed here
      var tweets = $.map(data.results || data, extract_template_data);
      tweets = $.grep(tweets, s.filter).sort(s.comparator).slice(0, s.count);
      $(widget).trigger("tweet:retrieved", [tweets]);
  });
4

3 に答える 3

1
$.when(
    $.getJSON('http://myUrlOne/?format=json'),
    $.getJSON('http://myUrlTwo/?format=json')
).then(function (a1, a2) {
    // First get the two objects from json
    // (you could check statusText in a1[1] if desired) :
    var obj1 = JSON.parse(a1[2].responseText);
    var obj2 = JSON.parse(a2[2].responseText);
    // Then, if you want to "merge" them you can do this :
    var obj = obj1;
    for (var key in obj2) {
        obj[key] = obj2[key]; // this will replace obj1[key] you have to know how you want to merge
    }
    // use obj
});
于 2012-09-05T15:17:29.833 に答える
0

jQuery.extend()を調べることから始めます。のようなもの$.extend(json1, json2)

于 2012-09-05T15:18:55.810 に答える
0

あなたはおそらく$.when().done()次のようなアプローチを使用しようとしています:

$.when(
    $.getJSON('http://myUrlOne/?format=json'),
    $.getJSON('http://myUrlTwo/?format=json')
).done( function(json1, json2) {
    // json1 and json2 represent the returned json, so just combine them as needed here
});

もちろん、リクエストの失敗を処理する必要がある場合は、 を使用する必要があります$.when().then()。あなたの例では失敗コールバックの使用を示していませんdone()でしthen()た。

于 2012-09-05T15:19:12.843 に答える