认识AJAX及函数使用

Posted CC大神01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识AJAX及函数使用相关的知识,希望对你有一定的参考价值。

 
 
 一、什么是AJAX
       Ajax(Asynchronous javascript and XML),可以理解为JavaScript执行异步网络请求。通俗的理解的话就是,如果没有Ajax技术,改变网页的一小部分(哪怕是一行文字、一张图片)都需要重新加载一次整个页面,而有了Ajax之后,就可以实现在网页不跳转不刷新的情况下,在网页后台提交数据,部分更新页面内容。

二、AJAX的原声写法

       1.XMLHttpRequest对象

              XMLHttpRequest 对象用于在后台与服务器交换数据,能够在不重新加载页面的情况下更新网页,在页面已加载后从服务器请求数据,在页面已加载后从
              服务器接收数据,在后台向服务器发送数据。所以XMLHttpRequest对象是Ajax技术的核心所在。
       
        2.实现流程
               创建 XMLHttpRequest对象——>打开请求地址,初始化数据——>发送请求数据——>监听回调函数状态——>收到服务器返回的应答结果。
               
               废话不多说,直接上代码
var xmlhttp;
             :
function loadXMLDoc(url) {
    xmlhttp = null;
    if (window.XMLHttpRequest){
        //code for all new beowsers
        xmlhttp = new XMLHttpRequest();//here is creat XMLHttpRequest object
        
    } else if (window.ActiveXObject){
        //code for IE5 and IE6
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    if (xmlhttp){
        xmlhttp.open("GET",url,true); //request mode and request address
        xmlhttp.send(null); //send request 
        xmlhttp.onreadystatechange = state_Change; //monitor callback fun
    } else {
        alert("Your browser dose not support XMLHTTP");
    }
}
// statr_Change callback function 
function state_Change() { 
    if(xmlhttp.readyState == 4&&xmlhttp.status == 200) {
        // to hide these two conditions is to express the succ of the request 4 = "loaded", 200 = OK
       var data = xmlhttp.responseText;
    } else {
        alert("Problem resrieving XML data");
    }
}

 3.原声写法中的注意点
            (1).open()的第三个参数中使用了“true”,该参数规定请求是否异步处理,默认是异步。
                 true表示脚本会在send()方法之后继续执行,而不等来自服务器的相应。
           
           (2).关于readyState

           (3).关于status由服务器返回的HTTP状态代码,200 表示成功,404 表示 “Not Found”错误。当readyState小于 3 的 时候读取这一属性会导致一个异常。(后面有http状态码详细解读)

Jquery中的AJAX
      
    Jquery对原声Ajax做了很好的封装,使用起来非常非常的月贴(舒服),比如$ajax,$get,$post,$getjson等根据不用需要进行调用,写法简洁明了,但是为兼顾哥哥方法在这里我以一个通用的方法$ajax为例做一个简单的分析,按照下面的模式写好各个参数,就能成功进行Ajax请求了,可能在实际中使用$POST,$GET这两个方法比较多,废话少说,看下面代码如何用jquery写ajax:

$.ajax({
    type:‘‘, // Request mode: get or post
    url:‘‘, //request url
    async:"", // Whether to support asynchronous refresh,default true
    data:"", // need submit data
    dataType:"", //the type if data retured bt the server
    success:function(data){
       //the callback function after the request,data is by the sercer returned 
    },
    error:function(data){
        //the callback function is error,
    }
})

四、GET or POST?

        作为Ajax最常用的两种数据提交方式,GET和POST有着自己的特点和使用场景,正确区分GET和POST的不同根据实际需求进行选用在开发中十分重要,简单是关键!!!

关键点:
        1.传递数据的方式不同:get是直接把请求数据放在url的后面,是可见的,post的请求数据不会显示在url中,是不可见得。
        2.数据长度和数据类型的差异:get有数据长度的限制,且数据类型只允许ASCII(ASCII是英文American Standard Code for Information Interchange的缩写。ASCII码是目前计算机最通用的编码标准,方便网站站长程序猿ASCII码查询)字符,post在这两方面都没有限制。
        3.安全性的差异:get不安全,post更安全。(废话,一个安全,一个不安全)
     由此得出两者使用的场景:
          get使用方便,使用于页面之间非敏感数据的简单传值,post使用较为安全,适用于向服务器发送密码、token等敏感数据。

五、success和complete区别
        Jquery封装的Ajax回调函数中,success、error、complete是最常用的三个,其中,success和error很好的区别,一个是请求成功回调用的,另一个是请求失败用的,从字上面就可以so ease 的理解,但是success和complete容易混淆,所以这里我做了一个特别说明:
       success:请求成功后回调函数,(我只有在成功后出来)。
       complete:请求完成后回调函数(不管成功失败,我都会出来的)。
       
       请注意括号里面的,没错区别就在于括号里面的,也就是说调用的success一定会调用complete,但是调用comlaete不一定会调用success。(状态码404、403、301、302...都会进入到complete,只要没毛病就会调用)

六、XML -> JSON
         Ajax中的“x”就是XML。
    
         xml:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使用其具有结构标记语言。
         xml作为一种数据交互格式,广泛用字啊计算机领域,然而,随着json的发展,json以其明显的有事已经“贱贱”的取代了xml成为现在数据交互的格式标准,所以在这里,想强调的是,json现在是主流的!主流的!主流的!交互格式,前后端的交互标准,无论是前端提交后台的数据,还是后台返回给前端的数据,都最好统一成json格式。

七、jquery中封装的ajax方法使用
     
      .ajaxComplete()-------------请求完成时
      .ajaxError()-----------请求失败时
      .ajaxSend()-------------在Ajax请求发送时附加一个function去执行
      .ajaxStart()-----------请求开始时
      .ajaxStop()----------请求 结束时
      .ajaxSuccess()--------------请求成功时
      .load()---------------从服务器加载数据并将返回的html替换到选择的元素中
      .Jquery.post()-----------使用HTTP POST请求加载服务器端数据
      .serialize()------------将from元素集编码成一个字符串以便提交
      .serializeArray()---------------将from元素集编码成一个键值对的数组或对象
      .Jquery.param()-----------------创建一个序列化的数组或对象,使得适用于一个URL查询字符串或者AJax请求
      .Jquery.getScript()----------------从服务器端加载一个js文件,然后执行它
      .Jquery.getJSON()---------------从服务器端加载用json编码过得数据
      .Jquery.get()-----------从服务器加载数据简单说其中亮点

ajaxstar和ajaxstop
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript" src="test/jquery.js"></script>
</head>
<body>
<div class="trigger">trigger</div>
<div class="result"></div>
<div class="log1"></div>
<div class="log2"></div>
</body>
<script type="text/javascript">
$(document).ready(function(){ //在此就不写注释了,字面上都是可以看懂的  嘻嘻
$(‘.log1‘).ajaxStart(function(){
$(this).text(‘start handler‘);
});
$(‘.log2‘).ajaxStop(function(){
$(this).text("ajax stop");
});
$(‘.trigger‘).click(function(){
$(‘.result‘).load(‘xxxx.html‘)
})
})
 
</script>
</html>
 

WEB前端互动交流群 434623999







































































以上是关于认识AJAX及函数使用的主要内容,如果未能解决你的问题,请参考以下文章

js-函数的认识及应用

js-函数的认识及应用

jQuery中的Ajax以及请求函数

JavaScript封装Ajax工具函数及jQuery中的ajax

关于JS递归函数细化认识及实用实例

Ajax 概述原生JS(GetPost)的实现及 Ajax函数封装