這部分的擴展,我的Previous Question訪問剩餘的JSON數據:初始阿賈克斯調用的外部使用JSON數據 -
現在我可以成功地從我的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數據的其他對象的20個div的內容。我覺得最好的辦法是在頁面上靜態佈局div,因爲總是會有相同的數量,然後相應地更新這些div中的數據。
我的問題是我如何仍然訪問返回的JSON數據一次超出最初的.ajax調用範圍。
例如:如果我將離開腳本設置事情是這樣的,我做出初步.ajax
呼叫並append()
內容到容器的前20個JSON數據對象(item
)之後。我如何訪問JSON數據中的其餘對象?
我已經假定我最好的選擇,以跟蹤返回的對象是將每個對象的item.id存儲在一個數組中arr[ ]
如果這沒有意義,或者它們是一個更簡單的方法,請糾正我。但是,我仍然不知道如何訪問剩餘的JSON數據對象?
我覺得好像我缺少明顯的東西,如讓我的JavaScript更面向將有助於這樣的話,我可以訪問每一個JSON對象,並對其執行不同的功能,但我覺得對象雖然我可能會丟失小。
可能的解決方案是讓每個JSON對象返回一個Javascript對象,該對象可以接受返回的JSON數據的參數,如(id,title,desc,link ...)? – Twhyler
您是否可以不只是將data.results指派給在持有更新邏輯的範圍中聲明的變量? –
@ScottEvernden除非我誤解,否則data.results無法在.ajax請求之外訪問。將大部分代碼放在'.ajax {}'裏面是不是不好的做法,這樣可以訪問它。感謝幫助! – Twhyler