用原生JavaScript写AJAX

//原生js写ajax就像打电话

//打电话分下面4步
//1.拿出手机
//2.拨号
//3.说话
//4.听对方说话

//ajax也分下面4步
//1.创建ajax对象
//2.连接到服务器
//3.发送请求(告诉服务器我要什么文件)
//4.接收返回值

下面是原生js写ajax的具体写法

<script>
window.onload=function()
{
    var oBtn = document.getElementById("btn1");
    oBtn.onclick = function()
    {
        //1.创建ajax对象
        //只兼容非ie6的浏览器,在ie6浏览器上运行会提示没有被定义
        //var oAjax = new XMLHttpRequest();//这才是ajax实际的请求
        //alert(oAjax);

        //ie6浏览器下按照下面方法写,但是在别的浏览器中不能用,会报错。
        //var oAjax = new ActiveXObject("Microsoft.XMLHTTP");
        //alert(oAjax);

        //鉴于上面出现的问题,可以采取下面的方法解决,用if判断是否为IE6浏览器
        if(window.XMLHttpRequest)//如果有XMLHttpRequest,那就是非IE6浏览器。()里面加window的原因下面会有描述。
        {
            var oAjax = new XMLHttpRequest();//创建ajax对象
        }
        else//如果没有XMLHttpRequest,那就是IE6浏览器
        {
            var oAjax = new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器创建ajax对象
        }

        //2.连接服务器
        //open(方法、文件名、异步传输)
        //方法:
            //传输方式是get方式还是post方式。
        //文件名
            //告诉服务器要读哪个文件
        //异步传输
            //异步:多件事一件一件的做
            //同步:多件事情一起进行
            //但是js里面的同步和异步和现实的同步异步相反。
                //同步:多件事一件一件的做
                //异步:多件事情一起进行
        //ajax天生是用来做异步的

        oAjax.open("GET","a.txt?t=‘+new Date().getTime()",true);//加上t=‘+new Date().getTime()"的目的是为了消除缓存,每次的t的值不一样。

        //3.发送请求
        oAjax.send();

        //4.接收返回
        //客户端和服务器端有交互的时候会调用onreadystatechange
        oAjax.onreadystatechange=function()
        {
            //oAjax.readyState  //浏览器和服务器,进行到哪一步了。
                //0->(未初始化):还没有调用 open() 方法。
                //1->(载入):已调用 send() 方法,正在发送请求。
                //2->载入完成):send() 方法完成,已收到全部响应内容。
                //3->(解析):正在解析响应内容。
                //4->(完成):响应内容解析完成,可以在客户端调用。
            if(oAjax.readyState==4)
            {
                if(oAjax.status==200)//判断是否成功,如果是200,就代表成功
                {
                    alert("成功"+oAjax.responseText);//读取a.txt文件成功就弹出成功。后面加上oAjax.responseText会输出a.txt文本的内容
                }
                else
                {
                    alert("失败");
                }
            }
        };
    }
};

/*//上面if里面需要些window的原因
//js里面的变量和属性

var a = 12;
alert(a);//页面上弹出12很正常,而实际上输出的是下面的写法,是属于window的,只是window能省就省了。
alert(window.a);//输出结果是一样的
window.alert(window.a);

//想a这种全局变量实际上是winow的一个属性。
//如果不定义一个变量a直接像下面那样输出a
alert(a)//系统会报错,而不是undefind,因为没有定义变量a。
alert(window.a);//如果是这样写,系统就不会报错了,会显示undefind。

//出现上面的原因是因为直接写a从根上就找不到a,而前面加上window只是找不到window的属性a了。*/

</script>

但是,不能每次用ajax的时候都写那么多代码,要把这段ajax代码封装起来,方便使用。

封装ajax

//最后把代码封装起来,封装起来以后,要给这个函数加上一个参数url.参数是为了替换要读取的文件名
function ajax(url,fnSucc)
{
    if(window.XMLHttpRequest)
        {
            var oAjax = new XMLHttpRequest();
        }
        else
        {
            var oAjax = new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器创建ajax对象
        }
        oAjax.open("GET",url,true);//把要读取的参数的传过来。
        oAjax.send();
        oAjax.onreadystatechange=function()
        {
            if(oAjax.readyState==4)
            {
                if(oAjax.status==200)
                {
                    fnSucc(oAjax.responseText);//成功的时候调用这个方法
                }
                else
                {
                    if(fnfiled)
                    {
                        fnField(oAjax.status);
                    }
                }
            }
        };
}

将封装的ajax调用

<script src="new_ajax.js"></script>//引用封装的ajax文件
<script>
window.onload=function()
{
    var oBtn = document.getElementById("btn1");
    oBtn.onclick = function()
    {
        ajax(‘a.txt‘,function(str){//读取a.txt文件里面的内容
                alert(str);//将读取的内容输出
            })
    }
};

</script>

时间: 2024-11-09 04:22:14

用原生JavaScript写AJAX的相关文章

原生JavaScript 封装ajax

原生JavaScript 封装ajax   function myajax(options){ //新建一个局部对象 用来存放用户输入的各种参数 var opt={ type:options.type||"get",//获取用户输入的传输方法,可选,不写为get data:options.data||"",//获取用户输入的数据 dataType:options.dataType||"",//获取用户输入的数据类型比如json 或者xml url

使用原生JavaScript发送ajax请求

关于使用原生JavaScript发送异步请求给服务端. 准备工作: 代码编写工具用的是sublime 服务端使用的是wamp搭的一个本地Apache服务器,主要用来返回数据 方便测试 步骤: 浏览器端 html标签绑定事件发送ajax请求----> 五步操作:1 创建异步对象XMLHttpRequest; 2 设置method url 3 发送请求给服务端 4 注册事件   5 在事件中获取服务端返回的数据,进行操作. 服务器端 1 获取请求数据 2 返回结果给浏览器 下面来一个小demo1做一

原生 JavaScript 实现 AJAX、JSONP

相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的. 其实,原生JavaScript实现AJAX并不难,这篇文章将会讲解如何实现简单的AJAX,还有跨域请求JSONP! 一.AJAX AJAX的核心是XMLHttpRequest. 一个完整的AJAX请求一般包括以下步骤: 实例化XMLHttpRequest对象 连接服务器 发送请求 接收响应数据

原生javaScript完成Ajax请求

使用原生javaScript完成Ajax请求,首先应该创建一个对象XMLHttprequest,考虑到兼容低版本IE浏览器,使用ActiveXObject对象,代码入下: var request; if(windoe.XMLHtprequest){ request=new XMLHttprequest(); }else{ request = new ActiveXObject(); } function success(text) { var textarea = document.getEle

原生javascript实现Ajax和jQuery实现Ajax实例应用

这是我自己写的例子,希望对大家有帮助 使用了struts2,jdk1.6 1.实体类书写 public class Student { private String toid ; private String name ; private String sex ; public String getToid() { return toid ; } public void setToid(String toid) { this.toid = toid; } public String getNam

使用原生js写ajax

// 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){ if(typeof XMLHttpRequest != "undefined"){ // 非IE6浏览器 return new XMLHttpRequest(); }else if(typeof ActiveXObject != "undefined"){ // IE6浏览器 var version = [ "MSXML2.XMLHttp.6.0"

原生javascript写的网页选项卡和jQuery写的比较

总的来说思路比较简单,就是先获取节点,然后对节点进行相应的处理,下面是完整的页面代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>原生js tab</title>

原生JS写Ajax的请求函数

原文:http://caibaojian.com/ajax-jsonp.html 一.JS原生ajax ajax:一种请求数据的方式,不需要刷新整个页面:ajax的技术核心是 XMLHttpRequest 对象:ajax 请求过程:创建 XMLHttpRequest 对象.连接服务器.发送请求.接收响应数据: 下面简单封装一个函数,之后稍作解释 1 ajax({ url: "./TestXHR.aspx", //请求地址 2 type: "POST", //请求方式

原生javascript发送ajax请求及服务端处理

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><h