Ajax即“AsynchronousJavascriptAndXML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,AJAX = 异步JavaScript和XML(标准通用标记语言的子集),AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。
这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
-----传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面;
AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
Ajax工作原理:
1. 基本参数
$.ajax,这个是JQuery对ajax封装的最基础步骤,通过使用这个函数可以完成异步通讯的所有功能。也就是说什么情况下我们都可以通过此方法进行异步刷新的操作。但是它的参数较多,有的时候可能会麻烦一些。看一下常用的参数:
1 2 3 4 5 6 7 8 9 10 11 | var configObj={method//数据的提交方式:get和posturl//数据的提交路径async//是否支持异步刷新,默认是truedata//需要提交的数据dataType//服务器返回数据的类型,例如xml,String,Json等success//请求成功后的回调函数error//请求失败后的回调函数}$.ajax(configObj);//通过$.ajax函数进行调用。 |
2. 实例分析
1 2 3 4 5 6 7 8 9 10 11 12 | $.ajax({url:‘/host‘,//数据提交地址type:"POST",//提交类型data: {‘k1‘:123,‘k2‘:"root"},//提交的内容 字典格式success: function(data){ //客户端会一直等待服务端返回的数值//data是服务器端返回的字符串var obj=JSON.parse(data);}})建议:永远让服务器端返回一个字典returnHttpResponse(json.dumps(字典)) |
3. 简单的前后端交互
Ajax代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $(function(){$(‘#ajax_submit‘).click(function () {$.ajax({url:"/test_ajax/",type:"POST",data:{‘hostname‘:$(‘#host‘).val(),‘ip‘:$(‘#ip‘).val(),‘port‘:$(‘#port‘).val(),‘b_id‘:$(‘#sel‘).val()},success:function (data) {if(data==‘OK‘){location.reload()//重新加载页面}else{alert(data);}}})})}) |
Django代码:
1 2 3 4 5 6 7 8 9 10 11 12 | deftest_ajax(request):print(request.method)h=request.POST.get(‘hostname‘)i=request.POST.get(‘ip‘)p=request.POST.get(‘port‘)b=request.POST.get(‘b_id‘)print(h,i,p,b)ifhandlen(h) >5:# 主机名长度判断models.Host.objects.create(hostname=h,ip=i,port=p,b_id=b)# 创建数据returnHttpResponse("OK") # 返回OK 严格大小写else:returnHttpResponse("主机名太短") # 返回错误提示 |
4.对前后端交互完善(当后端有问题时,前端收不到data,页面无反应)
Ajax代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $(function(){$(‘#ajax_submit‘).click(function () {$.ajax({url:"/test_ajax/",type:"POST",data:{‘hostname‘:$(‘#host‘).val(),‘ip‘:$(‘#ip‘).val(),‘port‘:$(‘#port‘).val(),‘b_id‘:$(‘#sel‘).val()},success:function (data) {console.log(data)//data {"data": null,"status": false,"error":"\u4e3b\u673a\u540d\u592a\u77ed"}var obj=JSON.parse(data);//反序列化 把字符串data换成对象obj//序列化 JSON.stringify() 把obj转换为字符串if(obj.status){location.reload()//重新加载页面}else{$(‘#error_msg‘).text(obj.error)}}})})}) |
Django代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | importjsondeftest_ajax(request):ret={‘status‘:True,‘error‘:None,‘data‘:None}# 返回一个字典try:h=request.POST.get(‘hostname‘)i=request.POST.get(‘ip‘)p=request.POST.get(‘port‘)b=request.POST.get(‘b_id‘)print(h,i,p,b)ifhandlen(h) >5:# 主机名长度print("ok")models.Host.objects.create(hostname=h,ip=i,port=p,b_id=b)else:ret[‘status‘]=Falseret[‘error‘]=‘主机名太短‘exceptException as e:ret[‘status‘]=Falseret[‘error‘]=‘请求错误‘return
知识推荐
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8
不良信息举报平台
互联网安全管理备案
Copyright 2023 www.wodecom.cn All Rights Reserved |