`
2277259257
  • 浏览: 515367 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

web开发总结----Ajax数据传递

 
阅读更多

Ajax数据传递

前端页面--------------------------------------------------------------------------------------------
一:get请求

 function btn_get_click() {
          var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
          var username = document.getElementById("txt_username").value;

          //添加参数,以求每次访问不同的url,以避免缓存问题
          xmlHttp.open("get", "Server.aspx?username=" + encodeURIComponent(username)  + "&random=" +Math.random());---1、前端发送数据
          xmlHttp.onreadystatechange = function () {
               if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    var txt = xmlHttp.responseText;-----1、前端获取回调数据(文本形式:name=value)
                    document.getElementById("result").innerHTML =txt;----给页面节点赋值


                    var txt = xmlHttp.responseText;-----2、前端获取回调数据(JSON格式的文本形式)
                   var citys = txt.evalJSON();
                   $('s2').innerHTML = '';
                   for(i=0;i<citys.length;i++){
                        var op =new Option(citys[i].cityName,citys[i].cityValue);
                        $('s2').options[i] = op;
                   }
                   var txt = xmlHttp.responseText;
                   var obj = txt.evalJSON();
                   $('d1').innerHTML = 'name:'+ obj.name + 'birthay:' + obj.birthday; //日期

 

                   var xml = xmlHttp.responseXML;----3、前端获取回调数据(xml dom 对象形式)

                   var mes=xml.getElementsByTagName("mes"); //获取mes节点
                   var mes_val=mes[0].childNodes[0].nodeValue; //表示第一个mes节点的第一个子节点
                   $('myres').value=mes_val;   //给页面节点赋值 

 

                   方法二:
                  var xmlDoc =xhr.responseXML.documentElement;
                  var name=xmlDoc.childNodes[0].childNodes[0].nodeValue;
                  var age   =xmlDoc.childNodes[1].childNodes[0].nodeValue                   
               }
          }

        xmlHttp.send(null); //发送请求,参数为null
     }


二:post请求

 function btn_post_click() {
       var xmlHttp = window.XMLHttpRequest ?new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
       var username = document.getElementById("txt_username").value;
       var age = document.getElementById("txt_age").value;   
       //文本数据组装:    
       var data = "username=" + encodeURIComponent(username)+ "&age=" + encodeURIComponent(age);

 

       //JSON数据组装:
       var page_data={}; //声明一个JSON类型
       page_data.username=username;
       page_data.age=age;
       var json=JSON.stringify(page_data);//转换为JSON数据,将这个变量json传值到后台,最简单的form提交

 

       //XML数据组装:
       第一步:创建一个XML的DOM对象
       function CreateDomDoc(){  //该函数应在btn_post_click()函数外定义
             Var signatures = ["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","Msxml2.DOMDocument","Microsoft.XmlDom"];
             for(var i=0;i<signatures.length;i++){
               try{
                    var domDoc = new ActiveXObject(signatures[i]);
                    return domDoc;
               }catch(e){ }
            }
            return null;
       }
       第二步:从客户端取得数据写入XML的DOM对象
       function CreateXml(doc){  //该函数应在btn_post_click()函数外定义
             var root= doc.createElement("root");
             var NAME = doc.createElement("NAME");
             NAME.text= username;
             root.appendChild(NAME);
             var AGE = doc.createElement("AGE");
             AGE.text= age;
             root.appendChild(AGE);
             doc.appendChild(root);
             return doc.xml;
       }
       第三步 互相调用
       var domDoc = CreateDomDoc(); //创建对象 将用send发送到服务器端
       if(domDoc!=null){
         var xml = CreateXml(domDoc); //写入xml 返回xml文档
       }else{
         alert("未安装MSXML控件");
       }

       XML数据组装方法二:
        var Xml="<?xml version='1.0' encoding='UTF-8'?>"
        +"<root>"
         + "<name>" + username + "</name>"
         +"<age>" + age +"</age>"
        +"</root>";

 

 

 

        //不用担心缓存问题
       xmlHttp.open("post", "Server.aspx", true);

       //必须设置,否则服务器端收不到参数
       xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

       xmlHttp.onreadystatechange = function () {
           if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
               var txt = xmlHttp.responseText;-----1、前端获取回调数据(文本形式:name=value)
               document.getElementById("result").innerHTML =txt;----给页面节点赋值

 

               var txt = xmlHttp.responseText;-----2、前端获取回调数据(JSON格式的文本形式)
               var citys = txt.evalJSON();
               $('s2').innerHTML = '';
               for(i=0;i<citys.length;i++){
                  var op =new Option(citys[i].cityName,citys[i].cityValue);
                  $('s2').options[i] = op;
               }
               var txt = xmlHttp.responseText;
               var obj = txt.evalJSON();
               $('d1').innerHTML = 'name:'+ obj.name + 'birthay:' + obj.birthday; //日期

 

 

               var xml = xmlHttp.responseXML;----3、前端获取回调数据(xml dom 对象形式)
               var mes=xml.getElementsByTagName("mes"); //获取mes节点
               var mes_val=mes[0].childNodes[0].nodeValue; //表示第一个mes节点的第一个子节点
               $('myres').value=mes_val;   //给页面节点赋值 

 

               方法二:
               var xmlDoc =xhr.responseXML.documentElement;
               var name=xmlDoc.childNodes[0].childNodes[0].nodeValue;
               var age   =xmlDoc.childNodes[1].childNodes[0].nodeValue
           }
        }

        //发送请求,要data数据
        xmlHttp.send(data);---1、前端发送数据(发送前数据处理)
        xmlHttp.send(data+“sex=男”);---前端发送数据(数据不处理)
        xmlHttp.send(json);---2、前端发送JSON数据(发送前数据处理)

        xmlHttp.send(domDoc);---3、前端发送XML对象数据(发送前数据处理) 
        xmlHttp.send(xml); 
    }

 


后端(servlect、jsp、Action):-------------------------------------------------------------------------------------------------------------
public class ActionServlet extends HttpServlet {
 public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
  response.setContentType("text/html;charset=utf-8"); //XML形式数据输出时:html换成xml
  PrintWriter out = response.getWriter();
数据接收----------------------------------------------------------------------------------
    1、文本字符串形式数据:
  String username =request.getParameter("username");  
  Double random =Double.parse(request.getParameter("random"));
  int        age =Int.parse(request.getParameter("age"));
  String     sex =request.getParameter("sex ");
    2、JSON形式数据:
  String jsonStr=request.getParameter("json");
  JSONArray jsonArray = JSONArray.fromObject(jsonStr);
  for(int i=0;i<jsonArray.length(); i++){
       JSONObject jsonJ = jsonArray.getJSONObject(i);
       User user=new User();
       user.setAge(jsonJ.getInt("age"));
       user.setUserName(jsonJ.getString("username"));
  }

  3、XML对象形式数据:
  Request.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");//设置接受类型,防止中文出现乱码情况
  XmlDocument xmldoc = new XmlDocument();  //建立xml文档对象
  xmldoc.Load(Request.InputStream); //接受ajax发送的xml文档对象流 //也可以接受普通字符流
  XmlNode nodeName = xmldoc.SelectSingleNode("//NAME");  //获得NAME节点
  String name = nodeName.InnerText; //取得节点值
  XmlNode nodeAge = xmldoc.SelectSingleNode("//AGE");  //获得AGE节点
  String age = nodeAge.InnerText; //取得节点值

 

数据输出----------------------------------------------------------------------------
   1、普通文本形式:(字符串形式)  
  if("king".equal(username))  out.println("用户名被占用");  
  out.close();


   2、JSON形式:导入 JSON 的 jar 包: JSON_jar.zip
 1)java对象:
  Option op = new Option("海淀","hd");
  JSONObject obj = JSONObject. fromObject (op);
  String str = obj.toString();
  out.println(str);  

  out.close();    
 2)数组:
  Option[] ops = {op,op2,op3};
  JSONArray obj = JSONArray. fromObject (ops);
  String str = obj.toString();
  out.println(str);  

  out.close();    
 3)集合:
  //手工组装josn格式的java数据:
  Option op = new Option("海淀","hd");
  Option op2 = new Option("东城","dc");
  Option op3 = new Option("西城","xc");
  List<Option> ops = new ArrayList<Option>();
  ops.add(op);
  ops.add(op2);
  ops.add(op3);
  
  //数据库查询的java对象:(前端取有用的值)
  List<Option> ops=optionService.findAll();
  JSONArray obj = JSONArray.fromObject(ops);
  String str = obj.toString();
  out.println(str);      ----后端输出JSON数据

  out.close();
 4)日期:(日期转为JSON需特殊处理)
  User user = new User();
  user.setBirthday(new Date()); 
  JsonConfig config = new JsonConfig();
  config.registerJsonValueProcessor(Date.class, new DateProcessor());
  JSONObject obj =JSONObject. fromObject (user,config);
  String str = obj.toString();
  out.println(str);

  out.close();

 }

 class DateProcessor implements JsonValueProcessor{  //提供日期转换规则的类
  private String pattern = "yyyy-MM-dd";
  public void setPattern(String pattern) {this.pattern = pattern;}
  public Object processArrayValue(Object arg0,JsonConfig arg1) {
   SimpleDateFormat sdf = new SimpleDateFormat(pattern);
   return sdf.format((Date)arg0);
  }
  public Object processObjectValue(String arg0,Object arg1, JsonConfig arg2) {
   SimpleDateFormat sdf = new SimpleDateFormat(pattern);
   return sdf.format((Date)arg1);
  }
 }

 

 3、XML对象形式:(组装xml数据和页面的组装一样)
   String Xml="<?xml version='1.0' encoding='UTF-8'?>"
          +"<root>"
             + "<name>" + username + "</name>"
             +"<age>" + age +"</age>"
          +"</root>";
  out.println(xml);
  out.close();
}

 

分享到:
评论

相关推荐

    Java_Web开发内幕-核心基础

    3. **MVC设计模式**:Model-View-Controller模式在Java Web开发中广泛使用,它将业务逻辑、数据模型和用户界面分离,提高了代码的可维护性和可扩展性。书中会介绍如何使用Struts、Spring MVC等框架实现MVC架构。 4....

    ajax和js的web开发

    在Web开发领域,Ajax(Asynchronous JavaScript and XML)与JavaScript是两种至关重要的技术,它们共同构建了现代网页的动态交互体验。Ajax的核心理念是通过后台数据异步交换,实现页面无需刷新即可更新部分内容,...

    21天学通Java web开发---PPT讲稿.zip

    《21天学通Java Web开发》是一套旨在帮助初学者快速掌握Java Web技术的教程。这个PPT讲稿涵盖了从基础到进阶的各种主题,旨在通过21天的学习,让学习者对Java Web开发有一个全面且深入的理解。以下是这份讲稿中可能...

    PHP-JQuery-Ajax-json

    标题“PHP-JQuery-Ajax-json”揭示了这个压缩包文件主要涉及的是Web开发中的核心技术,具体包括PHP、jQuery、Ajax以及JSON。这四个元素在构建动态、交互式的Web应用程序时起着至关重要的作用。 1. **PHP(Hypertext...

    Laravel开发-ajax-response

    在Laravel框架中,Ajax(异步JavaScript和XML)响应是一种常见的交互方式,它允许前端与后端进行无刷新的数据交换,从而提升用户体验。本文将深入探讨如何在Laravel项目中实现Ajax响应,并提供相关实践指导。 一、...

    VS2008WebAjax代码-陈利娥.rar

    【标题】"VS2008WebAjax代码-陈利娥.rar" 提供的是一组基于Visual Studio 2008开发的ASP.NET Web应用程序,其中应用了Ajax技术。...同时,这也是一种学习和借鉴他人经验的好方法,有助于提升个人在Web开发领域的技能。

    Bootstrap进度条与AJAX后端数据传递结合使用实例详解

    Bootstrap进度条与AJAX后端数据传递结合使用是Web开发中常见的技术结合,通过Bootstrap进度条展示数据加载的进度,提高用户体验,AJAX技术则可以实现在页面不刷新的情况下与服务器进行数据交互。本文将详细介绍...

    java Web开发AJAX ppt课件.zip

    **Java Web开发与AJAX** 在Java Web开发中,AJAX(Asynchronous JavaScript and XML)是一种核心技术,用于创建动态、交互式的网页应用。通过使用AJAX,开发者可以在不重新加载整个页面的情况下,从服务器获取数据...

    ajax例子,Google Web Toolkit 1.0.21-ajax example, Google Web Toolkit 1.0.21

    在"ajax例子,Google Web Toolkit 1.0.21-ajax example"中,我们可以预期找到的是一个使用GWT 1.0.21构建的Ajax示例应用。这个示例可能展示了如何使用GWT库创建异步通信,以及如何处理服务器返回的数据。通过学习这个...

    ajax-WEB考试

    综上所述,Ajax在WEB开发中扮演着至关重要的角色,通过异步数据交换提升了用户体验,简化了前端与后端的交互。随着技术的发展,Ajax的实现方式也在不断演进,如Promise和Fetch API的引入,让Web应用变得更加高效和...

    web大作业--前端,后端,数据库交互

    前端通过发送Ajax请求,可能使用JSON格式传递数据,与后端接口进行交互,后端再通过SQL语句与数据库进行通信,实现数据的增删改查。数据库管理系统可能包括MySQL、Oracle、SQL Server等,具体选择取决于项目需求和...

    json-servlet-ajax

    在Web开发中,JSON常用于后端服务器与前端客户端之间的数据交互,尤其是在AJAX(Asynchronous JavaScript and XML)技术中。 标题“json-servlet-ajax”暗示了我们讨论的重点是关于JSON如何在Servlet和AJAX之间进行...

    Laravel开发-salao-gerencial-ajax

    通过上述知识点,我们可以看出,`Laravel开发-salao-gerencial-ajax`项目是一个全面的Web应用实例,展示了如何利用Laravel框架构建一个高效、用户友好的管理平台。开发者通过熟练运用Laravel的各种特性,实现了复杂...

    70-528 中文(Web应用开发-ASP.NET2.0)微软认证题库

    - **控件间通信**: 学习如何在控件之间传递数据和触发事件。 3. **数据绑定与数据源** - **数据绑定**: 将数据源(如数据库、XML或数组)连接到控件,实现动态数据展示。 - **DataSource控件**: 包括...

    $.ajax json数据传递方法.docx

    该方法可以广泛应用于 Web 开发中,以实现异步数据交互和数据传递。 知识点总结: 1. 使用 $.ajax 对象实现异步数据传递 2. 封装 JSON 数据并将其作为参数传递给服务器端脚本 3. 使用 eval() 函数将 JSON 字符串...

    WEB开发 之 jQuery - AJAX load() 方法.docx

    在Web开发中,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互等任务。本文将深入探讨jQuery中的一个关键Ajax方法——`load()`,它允许开发者从服务器动态地加载数据并将其插入到...

    零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).rar

    XML因其结构清晰、易于解析的特点,常用于配置文件、数据交换等场景,在Java Web开发中起着重要的数据描述和传递作用。 【JSTL(JavaServer Pages Standard Tag Library)基础知识】让开发者能使用预定义的标签来...

    struts-ajax-myeclipse

    Struts和Ajax是两种在Web开发中广泛应用的技术。Struts是一种基于MVC(Model-View-Controller)设计模式的JavaEE框架,它主要用于构建企业级的Web应用程序,提供了一种组织和控制应用逻辑的方式。而Ajax...

    rongcloud-web-im-widget-master

    4. **前后端交互**:Web IM Widget需要与后端服务器进行数据交换,实现用户身份验证、消息传递等功能。这涉及到了Ajax请求、WebSocket等技术,以及可能的RESTful API设计。 5. **HTML和CSS**:虽然主要涉及...

Global site tag (gtag.js) - Google Analytics