`

Ajax开发

阅读更多

1. netbeans 中文版改成英文版
    在NetBeans的配置文件 "etc/netbeans.conf" 的netbeans_default_options="..." 配置项中加一个值: -J-Duser.language=en

 

2. 建立XMLHttpRequest对象
    * IE7,IE8,FireFox,Mozilla,Safari,Opera中直接new XMLHttpRequest()创建
    * IE6,IE5.5,IE5则需要通过某一个正确的ActiveXObject控件名称通过new ActiveXObject(控件名)的方式创建

 

3. XMLHttpRequest方法
    * open(String method, String url,boolean asynch, String username, String password)
        - 指定和服务器端交互的HTTP方法,URL地址及其它请求信息
        - method 表示HTTP所有请求方法,取值GET,POST、
        - url 请求服务器的地址
        - asynch 取值为true表示异步请求,false表示同步请求
        - username password 表示http认证机制需要的用户名和密码
    * send(content)
        - 向服务器发出请求,如果采用异步方式,该方法会立即返回
        - Content可以为null,DOM,输入流或字符串
    * setRequestHeader(String header, String value)
        - 设置HTTP请求中的指定头部header的值
        - 此方法在open方法后调用
    * getAllResponseHeaders()
        - 返回包含HTTP的所有响应头信息
        - 返回的头信息是字符串的形式,其中键名和键值用冒号分开,每组键之间用回车换行分隔
    * getResponseHeader(String header)
        - 返回HTTP响应头中指定的键名所对应的值
    * abort()
        - 停止当前http请求,对应的XMLHttpRequest对象会复位到未初始化状态


4. XMLHttpRequest的属性
    * readyState
        - 0 表示未初始化,对象已创建,未调用open
        - 1 表示open方法成功调用,Send方法尚未调用
        - 2 表示send方法已经调用,尚未开始接受数据
        - 3 正在接受数据,Http响应头信息已经接收,响应数据尚未接收完成
        - 4 完成。响应数据接收完成
    * onreadystatechange
        - 请求状态改变的时间触发器(readyState变化时,会调用这个属性上注册的javascript函数)

    * responseTest    服务器响应的文本内容
    * responseXML     服务器响应的XML内容对应的DOM对象
    * status          服务器返回的http状态码
    * statusText      服务器返回状态码的文本信息


5. 判断服务器端返回的XML数据是否正确

    当服务器端没有正确返回XML数据时,在JavaScript中使用responseXML的方式获取返回的XML数据对应的DOM对象时,FireFox和IE的结果是有差别的,IE获取根元素节点为null,FireFox获取根元素节点则是表示解析错误的元素节点

var rootElement = xmlhttp.responseXML.documentElement;
if(rootElement == null || rootElement.nodeName != ""){

}else{//数据正确返回,可以进行相关处理}

AJAX请求完整的示例代码

        <script type="text/javascript">
            var xmlhttp;
            //1.创建XMLHttpRequest对象,
        function submit(){
               if(window.XMLHttpRequest){
                    //适应IE7,IE8,FireFox,Mozillar,Safari,Opera
                    xmlhttp= new XMLHttpRequest();
                    if(xmlhttp.overrideMimeType){
                        xmlhttp.overrideMimeType("text/xml");
                    }
                }else if(window.ActiveXObject){
                    //IE6,IE5.5,IE5
                    var activexName=['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0',
                        'MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0',
                        'MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
                    for(var i=0;i<activexName.length;i++){
                        try{
                            xmlhttp=new ActiveXObject(activexName[i]);
                            break;
                        }catch(e){
                            
                        }
                    
                    }
                }
                if(xmlhttp== undefined || xmlhttp == null){
                    alert("当前浏览器不支持XMLRequest对象");
                    return;
                }
                //2.设置回调方法
                xmlhttp.onreadystatechange= callback;
                //3.设置和服务器端交互的参数
                var name = document.getElementById("name").value;
                
                //Get方式交互
                //xmlhttp.open("GET","ajaxrequest?name="+name,true);//true表示采用异步交互  
                //4. 设置向服务器发送数据,启动和服务器的交互
                //xmlhttp.send(null);//设置GET方法,不必在再send中传递参数 
                
                
                //Post方式提交
                xmlhttp.open("POST","ajaxrequest",true);
                //指定http请求中header的值,在open方法后调用
                xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                xmlhttp.send("name="+name+"&password=123");//send参数的内容可以是dom对象,输入流或字符串
                
            }
            
            function callback(){
                //5. 判断和服务器的交互是否完成,还要判断服务器是否正确返回了数据
                if(xmlhttp.readyState==4){
                    if(xmlhttp.status==200){
                        var messageNode = document.getElementById("message");
                        //纯文本数据接收方法
                var message = xmlhttp.responseText;
                        
                        //xml数据接收方式,使用前提:服务器需要设置content-type为text/xml
                        //var domXml=xmlhttp.responseXML;
                        messageNode.innerHTML=message;
                        /* 判断返回的XML数据是否正确
                        var rootElement = xmlhttp.responseXML.documentElement;
                        if(rootElement == null || rootElement.nodeName != ""){
                            
                        }else{//数据正确返回,可以进行相关处理}
                         */
                    }
                }
            }
        </script>

 

6. 解决XMLHttpRequest请求的缓存问题
    * 主要是浏览器对请求有缓存,同样的请求IE浏览器会访问缓存
    * 解决办法:请求参数增加时间戳,使每次请求的url都不同。关键代码如下

if(url.indexOf("?") >=0){
     url=url + "&t="+(new Date()).valueOf();
}else{
    url = url + "?t=" + (new Date()).valueOf();
}

 

    * IE中调试工具HttpWatch Basic
    * 验证码例子------*

7. 解决Ajax应用中的中文乱码问题 (参考)
    * 请求数据中包含中文,服务器端程序接收错误导致出现乱码
        - 在页面端将包含中文信息的请求数据利用javascript中的encodeURI进行两次编码处理,在服务器端将获取到的数据使用URLDecode类的decode方法(一次)按照utf-8的方式进行解码

        在服务器端只进行一次解码的原因是:应用服务器如Tomcat会自动进行一次解码,在Servlet中getParameter得到的数据已经是经过服务器解码一次的数据。
        - 解决方法原理:2.40分
        即,页面端对于参数name: name = encodeURI(encodeURI(name));服务器端: name=URLDecoder.decode(request.getParameter("name"),"utf-8")

 

    * 响应数据包中包含中文,编码设置错误导致浏览器中看到的结果数据是乱码
        - 保证页面端定义的charset和http响应头的Content-Type中定义的charset一致即可   
        - IE6 中XMLHttpRequest对象在页面端定义的charset和http响应头的Content-Type中定义的charset都是GB2312时,中文响应数据出现乱码。其它浏览器没有这种现象。解决办法:
            *- 将http响应头的Content-Type中定义的charset设置成utf-8。这不会影响IE7和IE8
            *- 仅仅使用MSXML2.XMLHTTP和Microsoft.XMLHTTP这两个中的一个来创建XMLHttpRequest对象,即

var activexName=['MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
for(var i=0;i<activexName.length;i++){
    try{
        xmlhttp=new ActiveXObject(activexName[i]);
        break;
    }catch(e){}
}

  

 

 

 

 

  • 大小: 51 KB
分享到:
评论

相关推荐

    ZK框架:Ajax开发实战

    由于提供的文件信息中,有关股票知识的部分占据了大部分内容,而与标题“ZK框架:Ajax开发实战”相关的内容并未在文件中明确出现,因此无法直接从给定的文件信息中生成与ZK框架和Ajax开发相关的内容。不过,我将基于...

    AJAX开发简略.pdf

    在AJAX开发中,XML经常用于数据交换格式。处理XML文档主要包括: - **解析XML**:将XML字符串转换为DOM树,便于进一步操作。 - **选择XML生成方式**:根据实际需求选择最合适的XML生成方法,如使用DOM或SAX解析器。...

    ajax开发资源打包下载

    综合这些资源,Ajax开发人员可以学习如何使用JavaScript、DOM、CSS和XMLHttpRequest对象创建高效的、互动性强的Web应用程序。通过DHTML和CSS实现动态视觉效果,使用DOM进行数据操作,借助XMLHttpRequest进行后台通信...

    AJAX 开发工具

    在AJAX开发过程中,选择一款合适的工具至关重要,因为它可以极大地提高开发效率和代码质量。 **IntelliJ IDEA** IntelliJ IDEA是一款由JetBrains公司开发的集成开发环境(IDE),被誉为Java开发者最喜欢的IDE之一...

    ZK Ajax开发框架 v8.5.zip

    ZK Ajax开发框架是一套以 AJAX/XUL/Java 为基础的网页应用程式开发框架,用于丰富网页应用程式的使用接口。最大的好处是,在设计AJAX网络应用程式时,轻松简便的操作就像设计桌面程式一样。 ZK包含了一个以AJAX为...

    网上购物商城ajax开发技术

    综上所述,"网上购物商城ajax开发技术"涵盖了前端与后端的交互、用户体验优化、数据格式处理、动态功能实现等多个方面,是构建高效、流畅的在线购物平台不可或缺的关键技术。通过Ajax,我们可以为用户提供更加便捷、...

    ZK框架:Ajax开发实战.pdf

    ZK框架:Ajax开发实战.pdf ZK框架:Ajax开发实战.pdf

    ZK框架:Ajax开发实战3rar

    ZK框架 : Ajax开发实战1.rar

    实验五 AJAX开发及JSP验证码

    实验五主要涵盖了AJAX技术的运用以及JSP验证码的开发,这两个知识点对于前端开发者来说是至关重要的。AJAX,即Asynchronous JavaScript and XML(异步JavaScript和XML),它允许网页在不重新加载整个页面的情况下与...

    Ajax开发精要——概念、案例与框架

    Ajax开发精要——概念、案例与框架

    ajax开发夹包

    这个"ajax开发夹包"显然包含了与Ajax相关的开发资源,帮助开发者更有效地实现异步数据交互。以下是关于Ajax及其相关技术的详细知识点: 1. **Ajax的基本原理**:Ajax的核心是JavaScript对象XMLHttpRequest,它允许...

    AJAX开发攻略(PDF)含配文代码

    ajax学习不可多得的快速上手手册。含配文代码。 文档为PDF格式,内容包含: 一、AJAX定义.. 二、现状与需要解决的问题. 三、为什么使用AJAX. 四、谁在使用AJAX. 五、用AJAX改进你的设计 ...七、AJAX开发.

    ajax 开发 必备文件 jquery ajax开发 一般处理程序ajax开发 应用

    在jQuery中,使用AJAX开发主要有以下知识点: 1. **jQuery的$.ajax()方法**:这是jQuery提供的核心AJAX函数,允许发送异步HTTP请求。例如: ```javascript $.ajax({ url: 'your_server_url', type: 'GET', // ...

    jQuery简化Ajax开发

    资源名称:jQuery简化Ajax开发内容简介:Ajax 并不是一种语言,它只是几种旧技术如 Javascript 和 XML 以及 DOM 的综合应用,全称为 Asynchronous Javascript and XML,即 异步 Javascript 和 XML...

    Ajax 开发详解,Ajax开发详解

    - 《Ajax开发详解.pdf》:这份文档可能详细介绍了Ajax的各种细节和最佳实践。 - "下载必看.htm":可能是关于Ajax开发的一些提示或注意事项。 - "飞娥软件Feiesoft.com.url":可能指向一个提供Ajax开发工具或教程...

    Ajax开发精要原码

    **Ajax开发精要原码详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升了用户...

    AJAX开发简略(附源代码)

    AJAX开发简略... 1 一、AJAX定义... 3 二、现状与需要解决的问题... 3 三、为什么使用AJAX. 4 四、谁在使用AJAX. 6 五、用AJAX改进你的设计... 6 例子1:数据校验... 7 例子2:按需取数据—...

    Ajax开发,Ajax例子,Ajax教程,Ajax开发源码, Ajax技术

    本教程将深入讲解AJAX开发,包括基本概念、实例、教程以及相关的开发源码。 **1. AJAX的基本原理** AJAX的核心是JavaScript对象XMLHttpRequest,它允许在后台与服务器进行通信。当用户触发某个事件(如点击按钮)...

    Eclipse_AJAX开发

    Eclipse 是一款强大的集成开发环境(IDE),尤其在Java开发领域有着广泛的应用。...文件"AJAX开发简略"和"AJAX¿ª·¢¼òÂÔ"可能包含了更详细的教程和指导,帮助进一步理解并实践Eclipse中的AJAX开发技术。

Global site tag (gtag.js) - Google Analytics