`
2277259257
  • 浏览: 499642 次
  • 性别: 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编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    (全JavaScript语言Web项目-图书管理系统)Books-Management-System-master.zip

    自己封装了数据库连接池的接口,利用Java项目MVC的思想组织后台,用Ajax传递前后台数据。 AngularJS用到了:ng-grid,ui-router,ng-file-upload等模块 ExpressJS用到了:body-parser,cookie-parser,cookie-session,ejs,...

    PHP和MySQL Web开发第4版pdf以及源码

    《php和mysql web开发(原书第4版)》:开发人员专业技术丛书。 目录 读者反馈 译者序 前言 作者简介 第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 ...

    面向Java开发人员的Ajax之2:Ajax的Java对象序列化

    如果您正在使用异步JavaScript和XML(Ajax)进行 Java:trade_mark: Web开发,那么您最关心的问题可能就是把数据从服务器传递给客户机。本文介绍了Java对象序列化的五种方式,并提供了选择最适合应用程序的数据格式和...

    PHP和MySQL WEB开发(第4版)

    20.3 使用其他Web站点的数据 20.4 使用网络查找函数 20.5 备份或镜像一个文件 20.5.1 使用FTP备份或镜像一个文件 20.5.2 上传文件 20.5.3 避免超时 20.5.4 使用其他的FTP函数 20.6 进一步学习 20.7 下一章 第21章 ...

    Ruby on Rails Web开发之旅.pdf【第二部分】

    《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第二部分;第一部分下载...

    Ruby on Rails Web开发之旅.pdf【第三部分】

    《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第三部分;第一部分下载...

    基于ApacheNutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件nutch-htmlunit.zip

    index-s2jh: 追加设置需要额外传递给solr索引的属性数据; 设定不需要索引的页面规则; 欢迎关注作者其他项目: S2JH - 基于SSH的企业Web应用开发框架 12306 Hunter - (功能已...

    JSON客户端与服务器端生成JSON数据及传递方法

    实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低...

    PHP和MySQL Web开发第4版

    《php和mysql web开发(原书第4版)》:开发人员专业技术丛书。 目录 读者反馈 译者序 前言 作者简介 第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 ...

    Ruby on Rails Web开发之旅.pdf【第一部分】

    《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第一部分;第二部分下载...

    知乎大神萧井陌web前端课程

    第19章 web安全和应对、服务器的配置文件处理、开发论坛的板块功能 第20章 论坛收尾、迁移mongo、性能 第21章 操作系统、python高级 第22章 python高级技巧、rpc实现和vagrant 第23章 架构、分布式、性能、聊天室...

    ASP.NET 3.5 开发大全11-15

    第8章 Web窗体的数据控件 8.1 数据源控件 8.1.1 SQL数据源控件(SqlDataSource) 8.1.2 Access数据源控件(AccessDataSource) 8.1.3 目标数据源控件(ObjectDataSource) 8.1.4 LINQ数据源控件(LinqDataSource) ...

    ASP.NET 3.5 开发大全1-5

    第8章 Web窗体的数据控件 8.1 数据源控件 8.1.1 SQL数据源控件(SqlDataSource) 8.1.2 Access数据源控件(AccessDataSource) 8.1.3 目标数据源控件(ObjectDataSource) 8.1.4 LINQ数据源控件(LinqDataSource) ...

    全JavaScript语言Web项目-图书管理系统

    使用MySQL+ExpressJS+AngularJS+NodeJS尝试开发的图书管理系统,开发前端后台模块,后台用ExpressJS和NodeJS搭建服务器,前端...自己封装了数据库连接池的接口,利用Java项目MVC的思想组织后台,用Ajax传递前后台数据。

    2018mui教程 mui实战视频教程 web移动端开发教程+源码

    MUI - 窗口管理及窗口之间的数据传递.mp4 MUI - 复选框、单选框、使用js获取选择值.mp4 MUI - cardview(卡片视图)、mask(遮罩蒙版).mp4 MUI - accordion(折叠面板)、button(按钮).mp4 h.js 使用教程.mp4 MUI - ...

    RESTful Web Services 中文版.rar

    RESTful Web Services中文版 1,3,4章 缺第二章和其他章节,源码网无色会在第一时间补齐,敬请关注本页。 本身完整目录: 目录 序.......................................I. --------------------------...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -为Web.config和PageManager增加属性AjaxTimeout(单位秒,默认30秒)。 -修正了在Grid的PageIndexChange事件中不能获取SelectedRowIndexArray属性的BUG(feedback:Violet)。 -Button控件将不再自动拥有display:...

    大名鼎鼎的IBM公司 Ajax 培训资料

    然后,服务器将数据返回 JavaScript 代码(仍然在 Web 表单中),后者决定如何处理这些数据。它可 以迅速更新表单数据,让人感觉应用程序是立即完成的,表单没有提交或刷新而用户得到了新数据。 JavaScript 代码甚至...

Global site tag (gtag.js) - Google Analytics