简介
一次性从服务器数据库中读取数据并传送到前端页面上是不现实的,一方面会加重服务器的压力,另一方面客户的带宽资源也会被占用。Ajax刚好可以解决数据异步加载的问题。Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
由于用 jQuery 实现 ajax 比较简单,因此接下来的代码引用jQuery库实现Ajax,另外使用Django作为框架。
其中jQuery可以手动下载放到本地文件夹中,也可以引用下面的语句。
1 |
<script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></script> |
HTML语句
类别为demo的div将展示Ajax数据
$(document).ready(function(){})指页面其他元素加载完成后开始加载Ajax数据,此时,浏览器不会有加载条和转圈的情况出现。当然也可以改为点击某个元素加载例如$('#demo').click(function(){})。
$.getJSON('/ajax_server/',function(ret)指从Django的view.py中的函数ajax_server读取JSON数据,数据通过$('#demo').append(ret)展示到div中。也可以使用document.getElementById("demo").innerHTML = ret;来展示数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<!DOCTYPE html> <html> <body> <div class = "demo"></div> <script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></script> <script> $(document).ready(function(){ $.getJSON('/ajax_server/',function(ret){ $('#demo').append(ret) }) }); </script> </body> </html> |
view.py(Django)
添加
1 2 3 |
def ajax_server(request): data_dict = {'xxx': 'omegaxyz.com', 'yyy': 'zzz'} return JsonResponse(data_dict) |
urls.py(Django)
添加
1 |
url(r'^ajax_server/$', 'tools.views.ajax_server', name='ajax_server'), |
缺陷
对应用Ajax最主要的批评就是,它可能破坏浏览器的后退与加入收藏书签功能。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的可能差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,HTML5之前的方法大多是在用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态)。
Really wanted to point out Now i am pleased I came in your website.