美文网首页
【Ajax】

【Ajax】

作者: 年少懵懂丶流年梦 | 来源:发表于2017-02-24 10:35 被阅读19次
一、Ajax技术简介

Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML),Ajax 不是新的编程语言,而是一种使用现有标准的新方法。

Ajax 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。Ajax 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

Ajax本身是一门综合性的技术,其主要应用包含了HTML、JavaScript、XML、DOM、XMLHttpRequest等页面技术,但是在这之中最重要的就是XMLHttpRequest对象。

Ajax技术并不只依赖于Java
Ajax技术并不是只能在Java中使用,现在的各个动态Web实现技术,如PHP、ASP.NET都已经很好的支持了Ajax技术。

二、XMLHttpRequest对象

在Ajax中主要是通过XMLHttpRequest对象处理发送异步请求和回应的,所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均支持 XMLHttpRequest对象(IE5 和 IE6 使用 ActiveXObject)。如果要创建一个XMLHttpRequest对象则必须使用JavaScript。

为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject

<script>
    var xmlHttp;
    function createXMLHttp() {
        if(window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        } else {
            // IE 内核的浏览器
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }

</script>

XMLHttpRequest对象中定义了的属性:

readState一共有5中取值:

  • 0:请求没有发出(在调用open()函数之前)。
  • 1:请求已经建立但还没有发出(在调用send()函数之前)。
  • 2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
  • 3:请求已经处理,正在接受服务器的信息,响应中通常有部分数据可用,但是服务器还没有完成响应。
  • 4:响应已经完成,可以访问服务器响应并使用它。

XMLHttpRequest对象中的方法:

XMLHttpRequest对象的open()和send()方法在回调函数中出现比较多,一般都会用open()方法设置一个提交的路径,并通过地址重写的方式设置一些请求的参数,而真正的发出请求操作可以通过send()方法完成。

如果是POST方法则需要在send()内传入数据

GET 还是 POST?
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:

  • 无法使用缓存文件(更新服务器上的文件或数据库)
  • 向服务器发送大量数据(POST 没有数据量限制)
  • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
三、第一个Ajax程序

请求一个静态页面

<!DOCTYPE HTML>
<html>
<head>
<title>JSP page</title>

<script>
    var xmlHttp;
    function createXMLHttp() {
        if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        } else {
            // IE 内核的浏览器
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }

    function showMsg() {
        createXMLHttp();
        xmlHttp.open("POST", "content.htm");
        xmlHttp.onreadystatechange = showMsgCallback;
        xmlHttp.send(null);
    }

    function showMsgCallback() {
        if (xmlHttp.readyState == 4) {    // 数据返回完毕
            if (xmlHttp.status == 200) {     // HTTP操作正常
                //接收返回的内容
                var text = xmlHttp.responseText;
                //设置使用的CSS样式表
                //document.getElementById("msg").className = "样式表名称";
                document.getElementById("msg").innerHTML = text;
            }
        }
    }
</script>

</head>

<body>
    <input type="button" onclick="showMsg()" value="调用Ajax显示内容">
    <span id="msg"></span>
</body>
</html>

如需获得来自服务器的响应,请使用XMLHttpRequest 对象的 responseTextresponseXML属性。

onreadystatechange 事件
当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState 属性存有 XMLHttpRequest 的状态信息。
下面是 XMLHttpRequest 对象的三个重要的属性:

在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
当 readyState 等于 4 且状态为 200 时,表示响应已就绪:

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
}

注意: onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。

相关文章

  • AJAX

    主要内容: ajax 是什么、原生ajax 写法和jQuery ajax写法。 AJAX 是什么 ajax,即As...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    一、简介 AJAX菜鸟教程 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • 复习jQuery - ajax

    jQuery ajax - ajax() 方法 $.ajax({ url:'oo.php', ...

  • jQuery中Ajax请求的使用和四个步骤示例

    ajax() 方法用于执行 AJAX(异步 HTTP)请求,所有的 jQuery AJAX 方法都使用 ajax(...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

网友评论

      本文标题:【Ajax】

      本文链接:https://www.haomeiwen.com/subject/bsyjbttx.html