これは部分的に私の前の質問の拡張です:
これで、CIコントローラーからJSONデータを正常に返すことができます。
{"results":[{"id":"1","Source":"My Source","Title":"My Title". . . .
コントローラー:
function outputAjax()
{
$this->load->model('my_model');
$data['results'] = $this->site_model->getInfo();
$this->output->set_output(json_encode($data));
}
.ajax
これは、リクエストを取得するために使用している現在のスクリプトです。
$(document).ready(function()
{
$.ajax(
{
url: 'http://localhost/project/index.php/controller/outputAjax',
dataType:'json',
success: function(data)
{
var limit = 19; //how many json objects are needed initially
var arr = []; // item.id of objects that have been used
$.each(data.results, function(index,item)
{
if (index > limit) return false; // gets required initial json objects
arr.push(item.id); // stores used json objects id's
// whole bunch of checks on item.id , item.Title, item.Description, etc...
$("#masonry-content").append('<div class="item" ' + item.id + item.Title + ' ... </div>');
});
上記のコードが示すように、私は現在、JSONデータの最初の20個のオブジェクトを取得し、それらをページコンテナーに追加しています。これは問題なく動作しますが..
私が抱えている問題time interval
は、最初に返されたJSONデータの他のオブジェクトでページに追加された20divのコンテンツを更新したいということです。これを行う最良の方法は、常に同じ量が存在するため、ページ上にdivを静的にレイアウトし、それに応じてそれらのdivのデータを更新することです。
私の質問は、最初の.ajax呼び出しの範囲外になったら、返されたJSONデータにアクセスするにはどうすればよいかということです。
例:スクリプトのセットアップをそのままにしておくと、最初の.ajax
呼び出しとappend()
、最初の20個のJSONデータオブジェクト(item
)を含むコンテナーへのコンテンツを作成した後です。JSONデータの残りのオブジェクトにアクセスするにはどうすればよいですか?
返されたオブジェクトを追跡するための最善の策は、各オブジェクトのitem.idを配列に格納することであるとすでに想定していましたarr[ ]
。これが意味をなさない場合、またははるかに簡単な方法である場合は、修正してください。しかし、残りのJSONデータオブジェクトにアクセスする方法がまだわかりませんか?
javascriptをよりオブジェクト指向にするなど、明らかな何かが欠けているように感じます。そうすれば、各jsonオブジェクトに個別にアクセスして、さまざまな機能を実行できますが、少し迷うかもしれません。