JS——简单实现Ajax步骤

本文详细介绍了JavaScript实现Ajax的步骤,包括定义XMLHttpRequest对象,使用open()和send()函数发送GET和POST请求。Ajax允许浏览器异步向服务器请求数据,更新页面而不刷新。文中给出了具体的代码示例,展示了如何处理响应数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ajax(Asynchronous JavaScript + XML)使得浏览器可以额外地向服务器请求数据而不用重新刷新页面,ajax从服务器或许到数据后,可用javascript操作DOM以改变页面。

定义XMLHttpRequest

实现ajax的核心是XMLHttpRequest对象,其使用主要是open()、send()等函数。

实现异步通信一班需要以下四步:
第一步:定义对象
第二步:调用,使用open函数打开
第三步:注册事件处理函数,准备接受响应并处理数据,并进行处理,然后调用对象,用send函数发送请求

var xhr = new XMLHttpRequest();

1.为了兼容性,事件回调需在open之前定义
xhr.onreadystatechange = function() {
    if(xhr.readyState == 4) {
        if(xhr.status >= 200 && xhr.status < 300 | xhr.status == 304) {
            alert(xhr.responseText);
        } else {
            alert("Request was failed.");
        }
    }
}
3.以get的方式请求example.txt,这里用相对路径,相对当前页面;最后一个参数代表是否异步。调用open之后,请求并没有发送,只是启动一个请求以备发送。
xhr.open("get", "example.txt", true);

4.请求主体无数据。调用send之后,请求就会被发送出去。
xhr.send(null);

定义XMLHttpRequest例子:

调用createXMLHTTPObject()方法返回XMLHttpRequest对象,代码如下:

<script>
    function createHTTPObject(){
        var XMLHttpFatories=[//兼容不同浏览器版本函数组
            function(){return new XMLHttpRequest()},
            function(){return new ActiveXObject('Msxm12.XMLHTTP')},
            function(){return new ActiveXObject('Msxm13.XMLHTTP')},
            function(){return new ActiveXObject('Microsoft.XMLHTTP')},
        ];
        var xmlhttp=false;
        for(var i=0;i<XMLHttpFatories.length;i++){
        //尝试用匿名 如果不成功,就继续下一个
            try{
                xmlhttp=XMLHttpFatories[i]();
            }catch(e){
                continue;
            }
            break;
        }
        return xmlhttp;
    }
</script>

建立XMLHttpRequest

定义创建对象后,可以使用XMLHttpRequest的open 函数建立,语法如下:

XMLHttpRequest.open();

该方法包含5个参数,其中前两个参数是必需的。 简单说明如下,

bstrMethd: HTTP 方法字符串,如POST. GET等,大小写不敏感。

bstrUrl: 请求的URL地址字符串,可以为绝对地址或相对地址。

VarAsyne: 布尔值,可选参数,指定请求是否为异步方式,默认为true.如果为真,当状态改变时会调用oedystatechange属性指定的回调函数。

bstUser: 可选参数,如果服务器需要验证, 该参数指定用户名,如果未指定,当服务器需要验证时会弹出验证窗口。

bstPassword: 可选参数,验证信息中的密码部分,如果用户名为空,则此值将被忽略.

例子:
使用XMLHttpRequest的send0方法发送请求到服务器端,并接收服务器的响应。send方法的用法如下所示。

XMLHttpRequest.send(varBody);

参数varBody表示将通过该请求发送的数据)如果不传递信息,可以设置参数为mull。

使用XMLHttpRequest对象的responseBody、responseStream、 response Text或responseXML属性,可以接收响应数据。

例子:
下面示例简单演示了如何实现异步通信方法,

<script>
    function createHTTPObject(){
        var XMLHttpFatories=[
            function(){return new XMLHttpRequest()},
            function(){return new ActiveXObject('Msxm12.XMLHTTP')},
            function(){return new ActiveXObject('Msxm13.XMLHTTP')},
            function(){return new ActiveXObject('Microsoft.XMLHTTP')},
        ];
        var xmlhttp=false;
        for(var i=0;i<XMLHttpFatories.length;i++){
            try{
                xmlhttp=XMLHttpFatories[i]();
            }catch(e){
                continue;
            }
            break;
        }
        return xmlhttp;
    };
    xmlHttp.open("GET","hello world", false);
    xmlHttp.send(null);
    alert(xmHtp.responseText);
</script>

在服务器端文件(server.asp) 中输入下面的字符串。

Hello World

在浏览器中预览客户端交h页面就会弹出-个提示对话框,显示“Hello World"的提示信息。

发送GET请求

发送GET请求时,只将包含查询字符串的URL传入open()方法。
使用GET请求较简单,比较方便,他适合传递简单的信息,不易传输大容量或者加密数据。

例子:
在页面(main.html)中定义一个请求连接,代码如下:

<script>

        function request(url){
        xmlHttp.open("GET","url", false);
        xmlHttp.send(null);
        alert(xmHtp.responseText);
        }
        window.onload=function(){
            var b=document.getElementsByTagName('input')[0];
            b.onclick=function(){
                var url='server.asp?callback=functionName'
                request(url);
            }
        }

</script>
<h1>异步传输数据</h1>
<input name="submit" type="button" id="submit" value="向服务器发送请求"/>

在服务器端文件server.asp中输入下面的代码,获取查询字符串callbank的参数值,应该把值相应给客户端

在浏览器中预览页面,当单击提交按钮时会弹出一个提 示对话框,显示传递的参数值,代码如下:

<%@LANGUAGE='VBSCRIPT' CODEPAGE='65001'%>
<%
callback=Request.QueryString('callback')
Response.Write(callback)
%>

提示: 查询字符串通过问号(?)前缀附加在URL的末尾,发送数据是以连字符(&)连接的
个或多个名/值对。每个名称和值都必须在编码后才能用在URL中,用户使用JavaScrip的cnoodeURIComponent()函数对其进行编码,服务器端在接收这些数据时也必须使用decodeURIComponent0函数进行解码。URL最大长度为2048字符(2KB).

发送POST请求

OST请求支持发送任意格式、任意长度的数据,般多用于表单提交。 与GET发送的数据格式相似,FOST发送的数据也必须进行编码,并用连字符(&)进行分隔,语法如下:

send('name1=value&name2=value2...');

例子:
使用post方法向服务器传输数据,代码如下:

<script>
var oStr = '';
var postData = {};
var oAjax = null;

//post提交的数据
postData = {"name1":"value1","name2":"value2"};

//这里需要将json数据转成post能够进行提交的字符串  name1=value1&name2=value2格式
postData = (function(value){
  for(var key in value){
    oStr += key+"="+value[key]+"&";
  };
  return oStr;
}(postData));

//这里进行HTTP请求
try{
  oAjax = new XMLHttpRequest();
}catch(e){
  oAjax = new ActiveXObject("Microsoft.XMLHTTP");
};

//post方式打开文件
oAjax.open('post','1.php?='+Math.random(),true);

//post相比get方式提交多了个这个
oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded");

//post发送数据
oAjax.send(postData);
oAjax.onreadystatechange = function(){

  //当状态为4的时候,执行以下操作
  if(oAjax.readyState == 4){
    try{
      alert(oAjax.responseText);
    }catch(e){
      alert('你访问的页面出错了');
    };
  };
};
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值