2

これは初心者の JavaScript の質問ですが、問題を簡単な方法で説明する方法がわからないため、Google でヘルプを検索する方法がよくわかりません。

国、都市、および販売のみのリストを取得する方法で JSON を再形成できるように、操作する必要がある大きくてやや複雑な JSON があります。

JSON自体は私にとって問題ではありません.JSONを受け取ったら、それを使ってやりたいことです. 基本的に、受信した大きな JSON から 3 つの個別のオブジェクト/配列を作成し、それらの 3 つの個別のオブジェクト/配列を$.ajax呼び出しの外で使用できるようにしたいと考えています。はい、成功のコールバック内でこれらすべてを実行できると思いますが$.ajax、すべての JSON 処理を別の場所で実行したいと思います。私の疑似 JavaScript は次のようになります。

var model = {
  countries: [],
  cities: [],
  sales: [],
  set: function(data) {
    //manipulate data here so that model.countries, model.cities, model.sales are populated
  }      
};


$.ajax({
  url: 'example.com/sample.json',
  success: function(data) {
    model.set(data);    //is this the right way to do this?
  }
});

$('#countries').html(model.countries);
$('#cities').html(model.cities);
$('#sales').html(model.sales);​

ただし、JavaScript は非同期で実行されるため、JSON がまだ受信されていないため、最後の 3 行は常に空白になります。

私の質問は、受信した JSON の結果を$.ajaxスコープ外の変数にバインドして、ページのどこでも使用できるようにするにはどうすればよいかということだと思います。

4

3 に答える 3

1

簡単な解決策は次のとおりです。

$.ajax({
  url: 'example.com/sample.json',
  success: function(data) {
    model.set(data);
    $('#countries').html(model.countries);
    $('#cities').html(model.cities);
    $('#sales').html(model.sales);​
  }
});

よりフレームワーク的なものが必要な場合は、Backbone.jsのようなものを見ることができます。

于 2012-11-12T04:25:06.963 に答える
1

AJAX 成功コールバックで HTML を入力します (つまり、ビューを更新します)。すなわち

function updateView() {
  $('#countries').html(model.countries);
  $('#cities').html(model.cities);
  $('#sales').html(model.sales);​
}

$.ajax({
  url: 'example.com/sample.json',
  success: function(data) {
    model.set(data);    //is this the right way to do this?
    updateView();
  }
});
于 2012-11-12T04:26:47.720 に答える
0

これらの 3 行をsuccessコールバックに入れ (関数に分割することもできます)、model人口をスキップします。

DOM 要素を JS オブジェクトとそのデータにバインドできるフレームワークがありますが、この場合はやり過ぎかもしれません。

于 2012-11-12T04:22:04.760 に答える