与后台交互方法一 ——Ajax

一、Ajax:为无刷新读取服务器端数据,常用在用户注册、在线聊天室等。

使用Ajax读取数据时有以下几点需要注意:

1.字符集编码前后台要一致,否则前台显示的数据为乱码。

2.使用随机数或时间清除缓存、阻止缓存,防止服务器端文件内容变化时,浏览器端没有及时更新。

3. Ajax读取的所有数据都是字符串,所以请求JSON文件时用eval解析。

4.Ajax读取的数据与扩展名无关。

5..用DOM创建元素

二、HTTP请求两种不同的方法:

Get方法一般用于获取数据,如浏览帖子。Get是在url里传数据:安全性低,容量小等。

Post方法一般用于上传数据,如用户注册。

三、创建Ajax对象:

高版本Ajax对象:XMLHttpRequest();

低版本(IE6-8)Ajax对象:ActiveXObject(“Microsoft.XMLHTTP”);

四、连接服务器方法:

Open(方法,文件名,异步传输)

五、请求状态监控:

Onreadystatechange事件

readyState属性:请求状态

0:未初始化,刚创建出来

1:发送,已调用send()方法,正在发送请求

2: 载入完成,shend()方法完成,已收到全部响应内容

3:解析,正在解析响应内容

4:完成,响应内容解析完成,可以在客户端调用了。

返回值为:responseText;

六、具体实现方式如下:

<html>

 

<head>

 

<meta charset="utf-8">

 

<meta name="author" content="" />

 

<meta name="copyright" content="" />

 

<title></title>

 

<style>

 

 

 

</style>

 

<script src="ajax.js"></script>

 

<script>

 

window.onload=function ()

 

{

 

var oBtn=document.getElementById('btn1');

 

 

 

oBtn.onclick=function ()

 

{

 

ajax('arr.txt', function (str){

 

var arr=eval(str);

 

 

 

alert(arr[0]);

 

 

 

 

 

//alert(str+12);

 

//alert(arr.length);

 

 

 

//alert(arr[0]);

 

});

 

};

 

};

 

</script>

 

</head>

 

 

 

<body>

 

<input type="button" value="aaa" id="btn1" />

 

</body>

 

</html>

 

Ajax.js

function ajax(url, fnSucc, fnFaild)

{

       //1.创建Ajax对象

       if(window.XMLHttpRequest)

       {

              var oAjax=new XMLHttpRequest();

       }

       else

       {

              var oAjax=new ActiveXObject("Microsoft.XMLHTTP");

       }

      

       //2.连接服务器(打开和服务器的连接)

       oAjax.open('GET', url, true);

      

      

       //3.发送

       oAjax.send();

      

       //4.接收

       oAjax.onreadystatechange=function ()

       {

              if(oAjax.readyState==4)

              {

                     if(oAjax.status==200)

                     {

                            //alert('成功了:'+oAjax.responseText);

                            fnSucc(oAjax.responseText);

                     }

                     else

                     {

                            //alert('失败了');

                            if(fnFaild)

                            {

                                   fnFaild();

                            }

                     }

              }

       };

}

 

 

Arr.txt

[2013,9,9]

 

 

 

 

posted @ 2013-09-09 09:34  海泉  阅读(1568)  评论(0编辑  收藏  举报