AJax技术

如何通过PHP和Sajax使用Ajax之JavaScript(3)

字号+ 作者:H5之家 来源:H5之家 2015-11-19 10:53 我要评论( )

ActiveXObject 在InternetExplorer中,用ActiveXObject代替XMLHttpRequest。它的函数与XMLHttpRequest的函数相同,甚至函数名都是一样的,如清单3所示。 清单3.初始化和使用ActiveXObject ... functionloadHTML(URL

ActiveXObject

在InternetExplorer中,用ActiveXObject代替XMLHttpRequest。它的函数与XMLHttpRequest的函数相同,甚至函数名都是一样的,如清单3所示。

清单3.初始化和使用ActiveXObject

 


  ...
functionloadHTML(URL,destination){
 dest=destination;
 if(window.XMLHttpRequest){
...
 }elseif(window.ActiveXObject){
request=newActiveXObject("Microsoft.XMLHTTP");
if(request){
 request.onreadystatechange=processStateChange;
 request.open("GET",URL,true);
 request.send();
}
 }
}
</script>


在这种情况下(使用InternetExplorer),实例化一个Microsoft.XMLHTTP类型的新ActiveXObject对象。然后,设置事件处理程序,调用对象的open函数。然后调用对象的send函数,这样ActiveXObject就工作了。

processStateChange函数
                                                                     



这里描述的函数叫作事件处理程序或回调函数。回调函数的目的是当对象状态发生变化时,能够处理状态变化。在具体的应用中,这个函数的目的应当是处理状态变化、检验对象是否到达预期状态、读取动态装入的内容。

processStateChange函数由XMLHttpRequest或ActiveXObject对象在对象状态发生变化时调用。当对象进入状态4时,表明页面的内容已经接收完成(请参阅清单4)。javascript视频教程

清单4.处理状态变化


  ...
vardest;

functionprocessStateChange(){
 if(request.readyState==4){
contentDiv=document.getElementById(dest);
if(request.status==200){
 response=request.responseText;
 contentDiv.innerHTML=response;
}
 }
}

functionloadHTML(URL,destination){
...


 当XMLHTTP对象到达状态4时,内容就已经就绪,可以提取并在浏览器的预期位置上显示。位置是contentDiv,内容从文档中检索。如果请求是正确的,而且也按正确的顺序检索,那么响应的状态应当是200。HTML响应保存在request.responseText中,把它设置到contentDiv.innerHTML,就可以在浏览器中显示它。

如果在传输过程中没有发生错误,一切正常,那么新内容就会在浏览器中出现;否则,request.status就不等于200。请参阅清单5了解错误处理代码。

清单5.错误处理

   ...
if(request.status==200){
 response=request.responseText;
 contentDiv.innerHTML=response;
}else{
 contentDiv.innerHTML="Error:Status"+request.status;
}
...
清单5会把有关传输错误的信息发送给浏览器。在示例应用程序中将把这个函数用作回调函数。接下来,学习GET和POST的问题和它们的差异。

GET与POST

GET和POST是进行HTTP请求和在请求中传递变量的两种方法。开发人员不应当随意选择使用哪种方法,因为两种方法都有使用意义。GET请求把变量嵌在URL中,这意味着它们是可以加书签的。如果变量可能会修改、购买商品或者做其他类似操作,这种方**有副作用。假设偶然间加了书签的页面有一个购买商品的URL,里面包含地址、信用卡号以及$100的产品,全都嵌在URL中,那么重新访问这个URL就意味着购买这件商品。

所以,只有在变量没有副作用,可以经常重新载入也不会发生什么的时候,才可以进行GET请求。适合GET请求的一个变量可能是分类ID。可以反复重新载入,分类会反复显示,但是没有任何累积的效果。

在另一方面,当变量对源(例如数据库)有作用时或者为了个人信息安全,应当采用POST请求。比如在购买一件$100的产品时,应当用POST请求。如果给付款页面加了书签,由于URL中没有变量,所以什么也不会发生,也不会意外地购买了不想购买的东西,或者在已经拥有的情况下又买了一次。

GET和POST的意义在Ajax中有同样的作用。在构建本文的应用程序和未来的应用程序时,理解GET和POST请求的差异是很重要的。这会有助于避免Web应用程序开发的常见缺陷。

编码方法

对于通过HTTP传输的数据进行编码,有多种方法,而XML只接受其中少数几种。互操作性最大的一种编码方法是UTF-8,因为它向后兼容美国信息交换标准码(ASCII)。有许多在其他国家使用的国际字符的编码方式不向后兼容ASCII,如果不进行恰当的编码,就不适合放在XML文件中。

例如,把字符串”Internationalization”放在浏览器中,用UTF-8编码的话,会把它变成I%F1t%EBrn%E2ti%F4n%E0liz%E6ti%F8n。经典ASCII字符的UTF-8编码与相同字符的7位ASCII码对应,这使UTF-8是一个理想的编码方法选择。

了解这一点是很重要的,因为在通过HTTP传输和接收文档的过程中都要处理编码问题,在使用Ajax时也是一样。使用Ajax进行传输时,也应当使用UTF-8编码,因为标准化可以提高互操作性。
如果还有疑问,大家可以来

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JQuery实现Ajax加载图片的方法

    JQuery实现Ajax加载图片的方法

    2016-02-24 17:01

  • 判断用户是不是为ajax请求

    判断用户是不是为ajax请求

    2016-02-24 17:00

  • Ajax与WEB开发 by alixixi.com

    Ajax与WEB开发 by alixixi.com

    2016-02-11 11:02

  • jQuery.ajax()的相关参数及使用

    jQuery.ajax()的相关参数及使用

    2016-02-08 16:00

网友点评
i