django-Query Ajax 实例 ($.ajax、$.post、$.get)
Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了。
推荐一篇不错的jQuery Ajax 实例文章,忘记了可以去看看,地址为:http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.html 和 http://www.w3school.com.cn/jquery/
$.post、$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()
一、$.ajax的一般格式
$.ajax({
type: 'POST',
url: url ,
data: data ,
success: success ,
dataType: dataType
});
二、$.ajax的参数描述
参数 描述
url | 必需。规定把请求发送到哪个 URL。 |
data | 可选。映射或字符串值。规定连同请求发送到服务器的数据。 |
success(data, textStatus, jqXHR) | 可选。请求成功时执行的回调函数。 |
dataType |
可选。规定预期的服务器响应的数据类型。 默认执行智能判断(xml、json、script 或 html)。 |
三、$.ajax需要注意的一些地方:
1.data主要方式有三种,html拼接的,json数组,form表单经serialize()序列化的;通过dataType指定,不指定智能判断。
2.$.ajax只提交form以文本方式,如果异步提交包含<file>上传是传过不过去,需要使用jquery.form.js的$.ajaxSubmit
实例:注册账号时用户名不能重复
1 <div class="right"> 2 3 <h1>添加用户</h1> 4 5 <form action="/user_add/" method="post" onsubmit="return check_form()"> 6 {% csrf_token %} 7 <ul> 8 <li> 9 <label for="username">用户名</label> 10 <input type="text" id="username" name="username" value="" onblur="check_username(this)" required> 11 <span class="user_error"></span> 12 </li> 13 <li> 14 <label for="password">密码</label> 15 <input type="password" id="password" name="password" value="" required> 16 </li> 17 <li> 18 <label for="repassword">确认密码</label> 19 <input type="password" id="repassword" name="repassword" value="" required> 20 </li> 21 <li> 22 <input type="submit" value="提交"/><span id="error"></span> 23 </li> 24 </ul> 25 </form> 26 27 </div> 28 29 </div> 30 <script> 31 function check_username(obj){ 32 var url='/check_username/';//请求地址 33 var username =$(obj).val(); 34 var data ={'username':username}//地址携带的参数 35 $.ajax({ 36 type:'get', 37 url:url, 38 data:data, 39 success:function(mydata){ 40 //当返回结果不为空时,账号已存在 41 if(mydata != ''){ 42 $(obj).css('border','1px solid red'); 43 $('#error').html('*账号已存在!') 44 } 45 else{ 46 $(obj).css('border','1px solid black'); 47 $('#error').html('') 48 } 49 } 50 51 }); 52 } 53 function check_form(){ 54 //分别取得两次输入的密码: 55 pwd=$('#password').val(); 56 repwd=$('#repassword').val(); 57 error=$('#error').html() 58 if(pwd == repwd){ 59 //判断错误信息 60 if(error == ''){ 61 //当错误信息不存在时 62 return true; 63 }else{ 64 //当错误信息存在时 65 return false; 66 } 67 68 }else{ 69 $('#error').html('两次密码不相同!') 70 return false; 71 72 } 73 74 75 76 } 77 </script>
1 url(r'^check_username/$', views.check_username),
1 def check_username(request): 2 #取得参数 3 username=request.GET.get('username') 4 check=models.user.objects.filter(username=username) 5 if check: 6 #返回字符串 7 return HttpResponse('账号已存在') 8 9 else: 10 return HttpResponse('')