Ajax操作

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))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-11-25 15:51  Jcp_Lee  阅读(220)  评论(0编辑  收藏  举报