Ajax:
Ajax是指一种创建交互式网页应用的网页开发技术。不需要进进刷新,实现与服务器进行数据通信。Ajax可以使网页实现异步更新,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
基于原生的JavaScript实现Ajax:
XmlHttpRequest对象:
XmlHttpRequest对象的主要方法:
void open(String method,String url,Boolen async) ??用于创建请求 ??参数: ??????method: 请求方式(字符串类型),如:POST、GET、DELETE... ??????url: ???要请求的地址(字符串类型) ??????async: ?是否异步(布尔类型)void send(String body) ???用于发送请求 ???参数: ???????body: 要发送的数据(字符串类型)
void setRequestHeader(String header,String value) ???用于设置请求头 ???参数: ???????header: 请求头的key(字符串类型) ???????vlaue: ?请求头的value(字符串类型)
String getAllResponseHeaders() ???获取所有响应头 ???返回值: ???????响应头数据(字符串类型)String getResponseHeader(String header) ???获取响应头中指定header的值 ???参数: ???????header: 响应头的key(字符串类型) ???返回值: ???????响应头中指定的header对应的值
XmlHttpRequest对象的主要属性:
a. Number readyState ??状态值(整数) ??详细: ?????0-未初始化,尚未调用open()方法; ?????1-启动,调用了open()方法,未调用send()方法; ?????2-发送,已经调用了send()方法,未接收到响应; ?????3-接收,已经接收到部分响应数据; ?????4-完成,已经接收到全部响应数据;b. Function onreadystatechange ??当readyState的值改变时自动触发执行其对应的函数(回调函数)c. String responseText ??服务器返回的数据(字符串类型)d. XmlDocument responseXML ??服务器返回的数据(Xml对象)e. Number states ??状态码(整数),如:200、404...f. String statesText ??状态文本(字符串),如:OK、NotFound...
程序:
(1)GET方式请求:
客户端:
<body>
<input type="text" />
<input type="button" value="Ajax1" onclick="Ajax1();" />
<script>
function Ajax1(){
var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象
xhr.open(‘GET‘,‘/ajax_json/‘,true);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){// 接收完毕
var obj = JSON.parse(xhr.responseText); console.log(obj)
}
};
xhr.setRequestHeader(‘k1‘,‘v1‘); // 设置数据头
xhr.send("name=root;pwd=123");
}
</script>
</body>
服务器端:
def ajax_json(request):
print(request.GET)
ret = {‘code‘:True, ‘data‘:None}
import json
return HttpResponse(json.dumps(ret),status=404,reason=‘Not Found‘) # 定义状态码及状态信息
return HttpResponse(json.dumps(ret))
(2)POST方式请求
客户端:
<body>
<input type="text" />
<input type="button" value="Ajax1" onclick="Ajax1();" />
<script>
function Ajax1(){
var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象
xhr.open(‘GET‘,‘/ajax_json/‘,true);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){// 接收完毕
var obj = JSON.parse(xhr.responseText); console.log(obj)
}
};
xhr.setRequestHeader(‘k1‘,‘v1‘); // 设置数据头
xhr.setRequestHeader(‘Content-Type‘, ‘application/x-www-form-urlencoded; charset-UTF-8‘);
xhr.send("name=root;pwd=123");
}
</script>
</body>
基于jquery实现:
??function add_student_byajax() {
???????????$(‘#ajax_add‘).click(function () {
????????????//获取要发送的数据
?????????????var sel = $(‘#sel‘).val();
?????????????var id = $(‘form‘).find(‘input[name="id"]‘).val();
?????????????var name = $(‘form‘).find(‘input[name="name"]‘).val();
?????????????var gender = $(‘form‘).find(‘input[name="gender"]‘).val();
?????????????var age = $(‘form‘).find(‘input[name="age"]‘).val();
?????????????var email = $(‘form‘).find(‘input[name="email"]‘).val();
???????????????$.ajax({
???????????????????url:‘/app/add_student/‘,//设置url
???????????????????type:‘POST‘,//设置发送的方式
???????????????????dataType:‘JSON‘,//设置要接收的数据类型
???????????????????data:{//设置要传送的数据
???????????????????????name:name,
???????????????????????age:age,
???????????????????????gender:gender,
???????????????????????email:email,
???????????????????????cls:sel,
???????????????????????id:id
???????????????????},
???????????????????success:function (obj){//执行成功后执行的回调函数,obj为服务器端返回的数据对象
???????????????????????if(!obj.status){
???????????????????????????$(‘#er‘).text(obj.error)
???????????????????????}else {
????????????????????????????location.href=‘/app/student/‘;
???????????????????????}
???????????????????}
???????????????})
???????????})
???????}
服务器端:
def add_student(request):
???if request.method ==‘GET‘:
???????print(234)
???????return HttpResponse(‘ok‘)
???elif request.method == ‘POST‘:
???????data={
???????????‘status‘:True,
???????????‘data‘:None,
???????????‘error‘:None
???????}
???????name = request.POST.get(‘name‘)
???????age = request.POST.get(‘age‘)
???????gender = request.POST.get(‘gender‘)
???????email = request.POST.get(‘email‘)
???????cls = request.POST.get(‘cls‘)
???????nid = request.POST.get(‘id‘)
data[‘status‘]=True
???????models.Student.objects.create(name=name, age=age, gender=gender, email=email, cls_id=cls)
???????return HttpResponse(json.dumps(data))
Ajax操作
原文地址:http://www.cnblogs.com/jcplee/p/7895495.html