`

AJAX的实现

    博客分类:
  • AJAX
阅读更多
AJAX的实现
ajax可以说的上当今很火的技术啦.
在村子里经常看到有人问xajax的技术,说实话,我觉得那东西太麻烦,用起来太费事.

ajax本身实现的机制不是很难,难的应该是在后期的javascript处理返回的responseText,responseXml

ajax本身的操作过程无外是:

1.构建一个xmlHTTP对像
2.通过xmlHTTP的同步或是异步方式发送数据(大部分都是异步方式)
3.如果是异步方式检查xmlHttp的状态变化
4.当状态变到readyState==4,而且status==200说明发送数据成功
5.这时候再通过javascript处理xmlHTTP的responseText或是responseXml(这两者是同时存在的)

function createRequest(){
        if(typeof XMLHttpRequest!="undefined")        {
                return new XMLHttpRequest();
        }else if(typeof ActiveXObject!="undefined"){
                var xmlHttp_ver  = false;
                var xmlHttp_vers = ["MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp","Microsoft.XmlHttp"];
                if(!xmlHttp_ver){
                        for(var i=0;i<xmlHttp_vers.length;i++){
                                try{
                                        new ActiveXObject(xmlHttp_vers[i]);
                                        xmlHttp_ver = xmlHttp_vers[i];
                                        break;
                                }catch(oError){;}
                        }
                }
                if(xmlHttp_ver){
                        return new ActiveXObject(xmlHttp_ver);
                }else{
                        throw new Error("Could not create XML HTTP Request.");
                }
        }else{
                throw new Error("Your browser doesn't support an XML HTTP Request.");
        }
}


注意:xmlHttp_vers 应该从版本高的往版本低的写,这样建立对像的数据调用的是你机子上安装过的最高版本的MSXML2.XmlHttp


第二步发送数据
这里主要是调用xmlHttp的open方法和send方法来处理
xmlHTTP的方法可以到www.xmlhttp.cn查看(我以前发过一个chm的,但因为版权被村长删除啦,谁要是想要,回信,我发一下)
下面是用post的方法发送数据
var xmlHttp;
xmlHttp = createRequest();
function sendPostRequest()
{    
        var shownum=document.getElementById("shownum").value;// html页面中一个id为shownum的input表单
        var url = "show.php";//要发送到的URL
        var queryString = "shownum" + "=" + shownum;
        //向服务端发送请求
        xmlHttp.open("post", url, true);//这里的第三个参数为true为异步方式处理
        xmlHttp.onreadystatechange = showData;//异步方式处理,当状态改变时会调用onreadystatechange属性指定的回调函数showData
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");//这一句是用post方法发送的时候必须写的
        xmlHttp.send(queryString);//发送你构建成的数据,如果为“get”方法时,这里可以写成xmlHttp.send(NULL);
}

第三步

当状态改变时会调用onreadystatechange属性指定的回调函数showData,来来检查状态变化

xmlHTTP.readyState 和xmlHTTP.status 可以去查手册,看一下就知道

function showData()
{ 
        var msg=document.getElementById("status");
                     //第4步
        if(xmlHttp.readyState==4)
        { 
                if(xmlHttp.status==200)
                { 
                //只有当readyState为4并且status为200时,才表示符合要求
                                                               //下面这一句话,就相当于上面说的第5步,处理返回的结果
                        msg.innerHTML =  xmlHttp.responseText;
                }
        }
        else
        {
                switch(xmlHttp.readyState)
                {
                case 0:
                        msg.innerHTML="未初始化...";
                        break;
                case 1:
                        msg.innerHTML="加载中...";
                        break;
                case 2:
                        msg.innerHTML="连接完成...";
                        break;
                case 3:
                        msg.innerHTML="交换数据...";
                        break;
                default:
                        break;
                }
        }
}


到这里就一次xmlhttp发送异步调用数据也就算完成啦
完整的代码是
<html>
<head>
<title>
ajax
</title>
<script language="javascript">
function createRequest(){
        if(typeof XMLHttpRequest!="undefined")        {
                return new XMLHttpRequest();
        }else if(typeof ActiveXObject!="undefined"){
                var xmlHttp_ver  = false;
                var xmlHttp_vers = ["MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp","Microsoft.XmlHttp"];
                if(!xmlHttp_ver){
                        for(var i=0;i<xmlHttp_vers.length;i++){
                                try{
                                        new ActiveXObject(xmlHttp_vers[i]);
                                        xmlHttp_ver = xmlHttp_vers[i];
                                        break;
                                }catch(oError){;}
                        }
                }
                if(xmlHttp_ver){
                        return new ActiveXObject(xmlHttp_ver);
                }else{
                        throw new Error("Could not create XML HTTP Request.");
                }
        }else{
                throw new Error("Your browser doesn't support an XML HTTP Request.");
        }
}

var xmlHttp;

function sendPostRequest()
{    
                     xmlHttp = createRequest();
        var shownum=document.getElementById("shownum").value;// html页面中一个id为shownum的input表单
        var url = "show.php";//要发送到的URL
        var queryString = "shownum" + "=" + shownum;
        //向服务端发送请求
        xmlHttp.open("post", url, true);//这里的第三个参数为true为异步方式处理
        xmlHttp.onreadystatechange = showData;//异步方式处理,当状态改变时会调用onreadystatechange属性指定的回调函数showData
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");//这一句是用post方法发送的时候必须写的
        xmlHttp.send(queryString);//发送你构建成的数据,如果为“get”方法时,这里可以写成xmlHttp.send(NULL);
}
function showData()
{ 
        var msg=document.getElementById("status");
                     //第4步
        if(xmlHttp.readyState==4)
        { 
                if(xmlHttp.status==200)
                { 
                //只有当readyState为4并且status为200时,才表示符合要求
                                                               //下面这一句话,就相当于上面说的第5步,处理返回的结果
                        msg.innerHTML =  xmlHttp.responseText;
                }
        }
        else
        {
                switch(xmlHttp.readyState)
                {
                case 0:
                        msg.innerHTML="未初始化...";
                        break;
                case 1:
                        msg.innerHTML="加载中...";
                        break;
                case 2:
                        msg.innerHTML="连接完成...";
                        break;
                case 3:
                        msg.innerHTML="交换数据...";
                        break;
                default:
                        break;
                }
        }
}

</script>
</head>
<body>
<div>要发送的数据:<input name="shownum" id="shownum" type="text"><input type="button" name="search" value="发送" onClick="sendPostRequest()"></div>
<div id="status"></div>
</body>
</html>


同一目录下要有一个show.php
内容为
[php]
<?php
$shownum = $_POST["shownum"];
echo $shownum;
?>
[/php]
分享到:
评论

相关推荐

    ajax实现用户登录注册

    本教程将深入讲解如何使用AJAX实现用户登录和注册功能,这对于初学者来说是一个很好的起点。 首先,我们需要理解AJAX的基本结构。一个基本的AJAX调用通常涉及以下步骤: 1. 创建XMLHttpRequest对象:这是AJAX的...

    jsp+ajax实现输入框自动搜索

    jsp+ajax实现输入框自动搜索 本文将详细介绍如何使用jsp和ajax技术实现输入框自动搜索功能,类似于百度搜索。 一、标题:jsp+ajax实现输入框自动搜索 该标题表明该技术使用jsp和ajax实现输入框自动搜索功能。 二...

    jQuery+ajax实现三级级联

    在这个“jQuery+ajax实现三级级联”的实例中,我们主要探讨如何利用这两种技术来创建一个能够逐级联动的下拉菜单系统,这在数据筛选和表单填写中十分常见,如地区选择、部门分类等场景。 首先,jQuery是一个轻量级...

    Ajax实现定时刷新,获取后台数据实现技术

    本篇文章将深入探讨如何利用Ajax实现定时刷新,以便实时获取后台数据。 一、Ajax基础 1. XMLHttpRequest对象:Ajax的核心是XMLHttpRequest(XHR)对象,它是JavaScript的一个内置对象,允许我们向服务器发送异步...

    使用Ajax实现页面表格添删改查的异步刷新操作

    "使用Ajax实现页面表格添删改查的异步刷新操作"是一个实用的技术实现,它允许用户在不刷新整个页面的情况下更新表格内容,从而提高页面响应速度和用户体验。 首先,我们需要理解AJAX的基本原理。AJAX通过JavaScript...

    html+Servlet+ajax实现登录修改

    在IT领域,构建Web应用程序是常见的任务之一,而"html+Servlet+ajax实现登录修改"是一种常见的技术组合,用于创建动态、交互式的用户界面。在这个项目中,我们使用HTML作为前端展示层,Servlet作为服务器端处理逻辑...

    利用Ajax实现无刷新验证用户名和密码是否正确

    "利用Ajax实现无刷新验证用户名和密码是否正确"这一技术就是为了让用户在输入登录信息时能够得到即时反馈,无需等待页面整体刷新,极大地提升了交互体验。Ajax(Asynchronous JavaScript and XML)是一种创建动态...

    ajax实现动态从数据库模糊查询显示到下拉框中(ajax方法返回Dataset的例子

    本文将详细讲解如何使用Ajax实现从数据库进行模糊查询,并将结果显示到下拉框(Dropdown List)中,这里我们将以一个具体例子——通过Ajax方法返回Dataset来阐述整个过程。 首先,我们需要在服务器端设置一个能够...

    Ajax 实现级联菜单

    下面将详细介绍Ajax实现级联菜单的相关知识点。 1. **异步通信**: Ajax的核心是通过XMLHttpRequest对象进行异步通信,它可以在不刷新页面的情况下与服务器交换数据并更新部分网页内容。这样可以提供更好的用户...

    Ajax实现用户注册

    总结来说,"Ajax实现用户注册"涉及了JavaScript基础、Ajax通信、HTTP请求响应、JSON数据交换、前端验证与服务器端验证、以及特定框架如ASP.NET AJAX的使用。通过这些技术,我们可以构建一个高效、实时反馈的用户注册...

    AJax实现PPT播放

    标题 "AJax实现PPT播放" 指的是利用Ajax技术来实现在网页上动态、无刷新地展示PowerPoint(PPT)演示文稿。Ajax,全称Asynchronous JavaScript and XML,是一种在无需重新加载整个网页的情况下,能够更新部分网页的...

    Ajax实现用户登录

    【Ajax实现用户登录】知识点详解 在Web应用中,用户登录是常见的功能模块,而Ajax(Asynchronous JavaScript and XML)技术的引入,极大地提升了用户体验,实现了页面无刷新的数据交互。在"Ajax验证用户名是否已经...

    Ajax实现的五子棋实例程序

    【Ajax实现的五子棋实例程序】是一种利用前端技术实现的互动游戏,它结合了Ajax(异步JavaScript和XML)技术,为用户提供无需刷新页面就能进行游戏交互的体验。Ajax的核心在于通过JavaScript与服务器进行异步通信,...

    购物车(纯AJAX实现)

    本项目"购物车(纯AJAX实现)"完全基于AJAX技术来实现实时更新和交互,无需刷新页面,提高了用户体验。通过这个项目,我们可以学习到以下几个关键的AJAX和JavaScript知识点: 1. **AJAX基础**:AJAX(Asynchronous ...

    投票系统ajax实现 加上ajax聊天系统

    【标题】"投票系统ajax实现 加上ajax聊天系统"涵盖了两个关键的技术领域:Ajax实现的投票系统和Ajax聊天系统。这两个技术都是Web开发中的重要组成部分,它们极大地提升了用户体验,实现了页面无刷新的数据交互。 ...

    AJAX实现分页功能

    在Web开发中,分页功能是一项非常常见的需求,它...总的来说,AJAX实现的分页功能使得Web应用能够更加动态和响应式,提高了用户的浏览效率,降低了服务器的压力。掌握这项技术对于任何Web开发者来说都是非常有价值的。

    Ajax实现的登录弹出窗口

    在这个"Ajax实现的登录弹出窗口"项目中,我们可以看到如何利用Ajax来创建一个用户友好的登录界面。 首先,Ajax的核心是JavaScript,它负责发送请求到服务器、处理返回的数据以及更新DOM(Document Object Model)以...

    ajax实现的动态树菜单

    "Ajax实现的动态树菜单"则是利用Ajax(Asynchronous JavaScript and XML)技术来实现实时、无需页面刷新的数据加载和交互。 Ajax的核心在于异步通信,它允许网页部分更新,而不是整个页面刷新。通过在后台与服务器...

    AJAX实现注册验证的例子

    **标题解析:** "AJAX实现注册验证的例子" 这个标题表明了我们要探讨的是一个使用AJAX技术来实现用户注册时的实时验证的示例。在网页应用中,AJAX(Asynchronous JavaScript and XML)允许我们在不刷新整个页面的...

    全静态html+ajax实现网站的顶和踩功能

    在构建Web应用时,"全静态html+ajax实现网站的顶和踩功能"是一个常见的需求,它可以提升用户体验,使得用户在浏览过程中无需刷新整个页面就能完成互动操作。在这个场景下,我们将深入探讨如何利用HTML、AJAX以及可能...

Global site tag (gtag.js) - Google Analytics