jquery收集页面参数生成xml,用于与server做数据交互
2017-02-09 17:33
190 查看
本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处。
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 = 0; i < arr.length; i ++){ if(i+1 >= 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-9]+\]/; var pnode = root; for(var i = 0; i < paths.length;i ++){ if(reg.test(paths[i])){ var tagName = paths[i].substring(0,paths[i].indexOf('[')); var index_str = paths[i].substring(paths[i].indexOf('[')+1,paths[i].indexOf(']')) var index = parseInt(index_str); // 存在[],多层次节点 // 判断是否存在该索引的节点 if(pnode.children(tagName).length < index+1){ // 不存在该标签 var node = $("<"+tagName+">"+"</"+tagName+">"); pnode.append(node); pnode = node; }else{ // 存在该标签 pnode = pnode.children(tagName).eq(index); } }else{ // 不存在[] // 判断是否存在该标签 if(pnode.children(paths[i]).length==1){ pnode = pnode.children(paths[i]).eq(0); }else{ // 打印错误 if(pnode.children(paths[i]).length>1){ 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="21"/> <input type="hidden" path="project/persons/person[1]/name" value="arise"/> <input type="hidden" path="project/persons/person[1]/age" value="20"/> <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="100" /> <input type="text" value="xxx" /> <textarea path="project/base_info/msg">king</textarea> <select id="sele" path="second_message/sec_msg"> <option></option> <option>1</option> <option>2</option> <option>3</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>
若有不足之处,还望指出!
相关文章推荐
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- serverXMLHTTP生成html页面代码
- 小技巧收集2-JQuery.Ajax数据交互
- jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
- jquery实例—json/xml数据格式交互
- Jquery之Ajax(页面后台间数据交互)
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 serlet配置页面
- 将jQuery Pagination分页插件用于不使用AJAX加载数据的页面
- 数据采集-关于post生成ticket传递参数给另一个页面用get方式验证登录
- 使用jquery中的ajax请求xml页面数据
- jQuery的ajax()检验用户名;通过jQuery的load()/get()/post()方法实现;使用XMLHTTPRequest对象来进行AJAX的异步数据交互
- 读取web.xml参数,jsp动作指令,jsp页面发布xml或者pdf数据
- sql server T-Sql操作Xml 和 数据生成xml
- jquery实现子父页面数据交互实现
- jquery读取XML 生成页面文件
- jquery 读取页面表格中的数据 生成批量insert代码 并以ajax方式传给后台
- 【转】灵活运用 SQL SERVER FOR XML PATH。用于方便处理生成视图
- jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 jsp页面
- RaceWeb介绍(8):由500强公司数据快速生成百度地图——设置页面参数,并一键发布