2011-02-06 53 views
2

我正在構建一個基於Django的網站,前端使用jQuery。它的一個方面是服務器發送200條以下格式向前端:jQuery + Django:將350KB的文本數據從服務器傳輸到客戶端?

field_1: up to 1000 character text 
field_2: up to 200 character text 
field_3: up to 200 character text 
field_4: up to 200 character text 
field_5: up to 200 character text 
field_6: a boolean value 

什麼前端將做使用JavaScript,基本上顯示這些記錄無需逐一頁面重新加載,即/ jQuery的。

所以我的問題是 - 什麼是最方便的方式將大多數文本數據從Django的〜350KB轉移到jQuery,以便這些記錄可以方便地存儲在客戶端(僅用於會話的長度當然)爲了上述目的?我接受建議。

回答

2

這將取決於你將如何處理客戶端上的數據。只需將其顯示爲200 <div>標籤?或者客戶將不得不使用這些數據?在這種情況下,您可能希望將其作爲JSON數據發送。然後它可以通過JavaScript直接讀入數據結構。

+0

它只會被顯示,在時刻(5個文本域)只有一個記錄。所以在客戶端,只有5個DIV,顯示一條記錄,簡單地說,就是一個「下一步」按鈕,所以當用戶按下它時,下一條記錄將放入這5個DIV中並顯示出來。 – Riddler 2011-02-06 11:14:04

+0

我會根據需要使用jQuery .load()方法來獲取每一個,這些方法可以直接將內容加載到元素中,而無需重新加載頁面,並且可以包裝所有Ajax複雜性。所以你的'下一個'按鈕只需要5次.load()調用,你的Django服務器有一個URL模式和一個視圖,它只是發送你的一個塊。 – Spacedman 2011-02-06 11:27:12

1

從我們提供的額外信息中,我只是將數據作爲常規的Django模板提供,您可以根據需要隨時調用這些模板。您只需要按照next ping服務器一次,而不是每次下一次。將其作爲普通HTML使用,並使用jQuery將該片段直接加載到需要的地方。不要爲此煩惱JSON,這對於很少(如果有的話)獲得更多的工作。

實施例:

#urls 
url(r'^record/(?P<record_id>\d+)/$', 'site.views.record', name='record') 

#views site/views.py 
def record(request, record_id): 
    obj = Record.objects.get(id=record_id) 
    return render_to_response('site/record_partial.html', { 
     'obj': obj 
    }, context_instance=RequestContext(request)) 

#templates site/record_partial.html 
    <div> {{ obj.field1 }} </div> 
    <div> {{ obj.field2 }} </div> 
    <div> {{ obj.field3 }} </div> 
    <div> {{ obj.field4 }} </div> 
    <div> {{ obj.field5 }} </div> 

# Page 
<div id='fields'> 
</div> 
<div id='next' data-page='3'> next >> </div> 
<script type='text/javascript'> 
    var next = $('#next').click(function() { 
     var page = $(next).data('page'); 
     $('#fields').load('/site/record/' + page + '/', function() { 
      $(next).data('page', page+1); // incr page number 
     }); 
    }) 
</script> 
相關問題