【Ajax】

2017-02-24  本文已影响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中取值:

XMLHttpRequest对象中的方法:

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

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

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

三、第一个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 的每个变化。

上一篇 下一篇

猜你喜欢

热点阅读