jquery收集页面参数生成xml,用于与server做数据交互
本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处。
http://www.cnblogs.com/king-xg/p/6382603.html
通过jquery来手机页面隐藏域或含有name属性的input标签值,生成XML字符串传送到服务器,可通过dom4j的xml解析技术进行参数获取
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="js/jquery-1.8.2.js" ></script>
<title>页面参数收集插件</title>
<script type="text/javascript"> function clickBT(){
var str = collect();
$("#text").text(str);
} function collect(){
var head = '<?xml version="1.0" encoding="UTF-8"?>';
var root = $("<root></root>");
var arr = $(document).find(":input[type='hidden'][path],:text[path],:hidden[path],:password[path],input[path],span[path],textarea[path],select[path]");
var xml = "";
for(var i = ; i < arr.length; i ++){
if(i+ >= arr.length){
xml = splitArr($(arr[i]),root);
break;
}
splitArr($(arr[i]),root);
}
return (head+"<root>"+xml+"</root>"); } function splitArr(obj,root){
var path = obj.attr('path').toLowerCase();
// 拆分path
var paths = path.split("/");
var reg = /\[[A-Za-z0-]+\]/;
var pnode = root;
for(var i = ; i < paths.length;i ++){
if(reg.test(paths[i])){
var tagName = paths[i].substring(,paths[i].indexOf('['));
var index_str = paths[i].substring(paths[i].indexOf('[')+,paths[i].indexOf(']'))
var index = parseInt(index_str);
// 存在[],多层次节点
// 判断是否存在该索引的节点
if(pnode.children(tagName).length < index+){
// 不存在该标签
var node = $("<"+tagName+">"+"</"+tagName+">");
pnode.append(node);
pnode = node;
}else{
// 存在该标签
pnode = pnode.children(tagName).eq(index);
}
}else{
// 不存在[]
// 判断是否存在该标签
if(pnode.children(paths[i]).length==){
pnode = pnode.children(paths[i]).eq();
}else{
// 打印错误
if(pnode.children(paths[i]).length>){
throw new Error("标签:"+paths[i]+"--存在多层次节点");
return null;
}
var node = $("<"+paths[i]+">"+"</"+paths[i]+">");
pnode.append(node);
// 初始化pnode
pnode = node;
}
}
}
//pnode.text("<![CDATA["+obj.val()+"]]>");
pnode.text(obj.val());
return root.html();
} </script>
</head>
<body>
<input type="hidden" path="project/persons/person[0]/name" value="king"/>
<input type="hidden" path="project/persons/person[0]/age" value=""/> <input type="hidden" path="project/persons/person[1]/name" value="arise"/>
<input type="hidden" path="project/persons/person[1]/age" value=""/> <input path="project/base_info/project_name" value="功能性项目"/>
<input path="project/base_info/create_time" value="2017-02-07"/> <input type="text" path="project/base_info/money" value="" />
<input type="text" value="xxx" /> <textarea path="project/base_info/msg">king</textarea> <select id="sele" path="second_message/sec_msg">
<option></option>
<option></option>
<option></option>
<option></option>
</select> <span path="message/text">it is only text!</span> <input path="project/books/book[0]/menu/section[0]" value="章节0"/>
<input path="project/books/book[0]/menu/section[1]" value="章节1"/>
<input path="project/books/book[1]/menu/section[0]" value="</section>"/>
<input path="project/books/book[1]/menu/section[1]" value="章节1"/>
<input path="project/books/book[2]/menu/section[0]" value="章/r/n节0"/>
<input path="project/books/book[2]/menu/section[1]"/>
<input path="project/books/book[2]/menu/section[2]" value="章节2"/>
<input type="button" name="collection" value="collect" onclick="javascript:clickBT()" /> <textarea id="text" style="width: 500px;height: 400px;"></textarea>
</body>
</html>
若有不足之处,还望指出!
jquery收集页面参数生成xml,用于与server做数据交互的更多相关文章
- QtQuick多页面切换、多页面切换动画、多个qml文件数据交互
一.QtQuick多页面切换方法 (1)“隐藏法” 前一个视图visible设为false或者透明度opacity设为0,相当于“隐藏”了,实际还存在: 要显示的视图visible设为true或者透明 ...
- 利用Java.util.UUID来生成唯一ID(用来做数据库主键好用)
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.按照开放软件基金会(OSF)制定的标准计算, ...
- 【转】以XML文件方式保存用户数据——2013-08-25 22
正在做项目中有很多游戏数据要保存,常见的玩家数据这些比较简单的可以用CCUserDefault.它是cocos2d-x用来存取基本数据类型用的.保存为XML文件格式. 主要方法:(和java的map很 ...
- MUI框架-10-MUI 数据交互-跳转详情页面
MUI框架-10-MUI 数据交互-跳转详情页面 上一篇介绍了如何实现数据交互,给别人的 API 发送 ajax 请求,我们得到数据,再使用 art-template 模板引擎拼接 HTML,最终实现 ...
- Ajax--PHP+JQuery+Ajax解析json、XML数据、加载页面
一.JQuery+Ajax用get.post方式提交和请求数据 知识要点: $('#userName').blur(function () { var txt = $(this).val(); $.a ...
- jQuery ajax() 参数,回调函数,数据类型,发送数据到服务器,高级选项
$.ajax({ options:/*类型:Object; 可选.AJAX 请求设置.所有选项都是可选的.*/ async:/*类型:Boolean; 默认值: true.默认设置下,所有请求均为异 ...
- jquery 实现页面局部刷新ajax做法
这个方法就多了去了,常见的有以下几种:下面介绍全页面刷新方法:有时候可能会用到 window.location.reload()刷新当前页面. parent.location.reload()刷新父亲 ...
- 大数据技术之_25_手机APP信息统计系统项目_01_APP 数据生成模块 + 数据收集模块 + 数据处理模块框架搭建 + 业务需求处理 + 数据展示模块 +项目总结 + 问题总结
一 项目概述1.1 角色1.2 业务术语1.3 项目效果展示二 项目需求三 项目概要3.1 项目技术架构3.2 项目目录结构3.3 项目技术选型3.4 项目整体集群规划3.5 创建项目工程四 APP ...
- java 解析并生成 XML
在 java 中使用 Dom4j 解析 XML 对 XML 文件的解析,通常使用的是 Dom4j 和 jdom 作为XML解析工具. 在此只介绍下 Dom4j 对 XML 文件的解析使用方法. 1. ...
随机推荐
- 冲刺ing-2
第二次Scrum冲刺 队员完成的任务 队员 完成任务 吴伟华 分配任务 蔺皓雯 编写博客,查阅资料 蔡晨旸 查阅资料 曾茜 暂无 鲁婧楠 暂无 杨池宇 暂无 成员遇到的问题 队员 问题 吴伟华 暂无 ...
- “我爱淘”第二冲刺阶段Scrum站立会议5
完成任务: 完成了登录界面的实现,可以按照数据库中的用户名密码进行登录,. 计划任务: 在客户端实现分类功能,通过学院的分类查看书籍. 遇到问题: 再登录上了之后,并且保存密码,但是点击退出当前账号这 ...
- 未能加载文件或程序集 system.Web.Http.WebHost解决办法。
在csdn中找到一个方法: Update-Package Microsoft.AspNet.WebApi -reinstall 然后就好了. 另外一个方法是缺少哪个dll,就复制一个dll放到bin文 ...
- Microsoft Orleans 之安装
先决条件 Orleans 是一个.net 类库集,为了使用它,你需要.net 4.5.1 或者更高版本,开发工具集需要visual studio 2015 或者更高版本或者其他支持的开发工具,不支持V ...
- TFTP服务 简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,默认端口号为69
(1)yum安装:tftp.tftp-server (2)启动tftp CentOS 6 service xinetd restart chkconfig tftp on CentOS 7 sys ...
- 结对项目——fault,error,failure的程序设计
一.结对编程内容: 1.不能触发Fault. 2.触发Fault,但是不触发Error. 3.触发Error,但不触发Failure. 二.结对编程人员 1.周宗耀.周浩: 2.结对截图: 三.结对项 ...
- 使用ASP.NET Identity 实现WebAPI接口的Oauth身份验证
使用ASP.NET Identity 实现WebAPI接口的Oauth身份验证 目前WEB 前后端分离的开发模式比较流行,之前做过的几个小项目也都是前后分离的模式,后端使用asp.net weba ...
- java map添加另一个map时候 键值对的类型要一致
java map添加另一个map时候 键值对的类型要一致
- 洛谷 [USACO09OPEN]工作调度
题面 读完题,我们会发现有一个很重要的信息,每件物品代价相同,但价值不同.那么我们很容易想到,在满足限制的情况下,我们肯定会选择价值尽可能大的物品. 我们可否用背包来实现呢,答案是否定的,或者说我不会 ...
- P2766 最长不下降子序列问题
题目描述 «问题描述: 给定正整数序列x1,...,xn . (1)计算其最长不下降子序列的长度s. (2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列. (3)如果允许在取出的序列中多次 ...