认识AJAX及函数使用

原创 songYJ 教程 javascript 1158阅读 2017-11-22 09:22:04 举报

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

二、AJAX的原声写法

   1.XMLHttpRequest对象

          XMLHttpRequest 对象用于在后台与服务器交换数据,能够在不重新加载页面的情况下更新网页,在页面已加载后从服务器请求数据,在页面已加载后从
          服务器接收数据,在后台向服务器发送数据。所以XMLHttpRequest对象是Ajax技术的核心所在。

    2.实现流程
           创建 XMLHttpRequest对象——>打开请求地址,初始化数据——>发送请求数据——>监听回调函数状态——>收到服务器返回的应答结果。

           废话不多说,直接上代码
           [code=javascript,ajax代码]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");
}
}[/code]
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:
    **jquery中的ajax**

四、GET or POST?

    作为Ajax最常用的两种数据提交方式,GET和POST有着自己的特点和使用场景,正确区分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()-----------从服务器加载数据简单说其中亮点

  -------------------------------------------------------------------------------------直接上代码--------------------------------------------------------------------------------------------

[code=javascript,ajaxstart和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>
[/code]

如果您喜欢或者巴拉巴拉一大堆,那你就点个赞如何!!!
评论 ( 4 )
最新评论