jQuery + Django:将350KB的文本数据从服务器传输到客户端?

问题描述:

我正在构建一个基于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,以便这些记录可以方便地存储在客户端(仅用于会话的长度当然)为了上述目的?我接受建议。

这将取决于你将如何处理客户端上的数据。只需将其显示为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

从我们提供的额外信息中,我只是将数据作为常规的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>