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

javaScript StringBuilder、form2Json、form 转换为json 字符串

    博客分类:
  • work
阅读更多

    没有依赖 js库

function StringBuilder(){
	this._element_ = new Array();
	this.append = function(item) {
		this._element_.push(item);
	}
	this.toString = function() {
		return this._element_.join("");
	}
	this.toJsonString = function() {
		return this._element_.join(",");
	}
	this.join = function(separator) {
		return this._element_.join(separator);
	}
	this.length = function() {
		return this._element_.length;
	}	
}
function Map() {
	this.elements = new Array();
	// 获取MAP元素个数
	this.size = function() {
		return this.elements.length;
	}
	// 判断MAP是否为空
	this.isEmpty = function() {
		return (this.elements.length < 1);
	}
	// 删除MAP所有元素
	this.clear = function() {
		this.elements = new Array();
	}
	// 向MAP中增加元素(key, value)
	this.put = function(_key, _value) {
		this.elements.push({key : _key,value : _value});
	}	
	//增加元素并覆盖
	this.putOverride = function(_key,_value){
		this.remove(_key);
		this.put(_key,_value);
	}
	// 删除指定KEY的元素,成功返回True,失败返回False
	this.remove = function(_key) {
		var bln = false;
		try {
			for (i = 0; i < this.elements.length; i++) {
				if (this.elements[i].key == _key) {
					this.elements.splice(i, 1);
					return true;
				}
			}
		} catch (e) {
			bln = false;
		}
		return bln;
	}

	// 获取指定KEY的元素值VALUE,失败返回NULL
	this.get = function(_key) {
		try {
			for (i = 0; i < this.elements.length; i++) {
				if (this.elements[i].key == _key) {
					return this.elements[i].value;
				}
			}
		} catch (e) {
			return null;
		}
	}
	// 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
	this.element = function(_index) {
		if (_index < 0 || _index >= this.elements.length) {
			return null;
		}
		return this.elements[_index];
	}
	// 判断MAP中是否含有指定KEY的元素
	this.containsKey = function(_key) {
		var bln = false;
		try {
			for (i = 0; i < this.elements.length; i++) {
				if (this.elements[i].key == _key) {
					bln = true;
				}
			}
		} catch (e) {
			bln = false;
		}
		return bln;
	}
	// 判断MAP中是否含有指定VALUE的元素
	this.containsValue = function(_value) {
		var bln = false;
		try {
			for (i = 0; i < this.elements.length; i++) {
				if (this.elements[i].value == _value) {
					bln = true;
				}
			}
		} catch (e) {
			bln = false;
		}
		return bln;
	}
	// 获取MAP中所有VALUE的数组(ARRAY)
	this.values = function() {
		var arr = new Array();
		for (i = 0; i < this.elements.length; i++) {
			arr.push(this.elements[i].value);
		}
		return arr;
	}
	// 获取MAP中所有KEY的数组(ARRAY)
	this.keys = function() {
		var arr = new Array();
		for (i = 0; i < this.elements.length; i++) {
			arr.push(this.elements[i].key);
		}
		return arr;
	}
}

   /*form 转换为json 字符串*/

function form2Json(formName){
var form=document.getElementById(formName);
var sb=new StringBuilder();var rcs=new Map();
	for ( var i = 0; i < form.elements.length; i++){
		var element = form.elements[i];	var name = element.name;
		if (typeof (name) === "undefined" || (name === null) || (name.length === 0)){continue;}
		var tagName = element.tagName;		
		if(tagName ==='INPUT'||tagName === 'TEXTAREA'){var type = element.type;
			if ((type === 'text')||(type === 'password') || (type === 'hidden') || (tagName === 'TEXTAREA')){
				sb.append("\""+name+"\":\""+encodeURIComponent(element.value.replace(/\r\n/ig,""))+"\"");
			}else if((type === 'checkbox') || (type === 'radio')){
				rcs.putOverride(name,type);
			}else{continue;}
		}else if (tagName === 'SELECT'){var oc = element.options.length;
			for ( var j = 0; j <oc; j++){
				if (element.options[j].selected){sb.append("\""+name+"\":\""+(element.value)+"\"");}
			}
		}
	}	
	if(rcs.size()>0){
		for(var i=0;i<rcs.size();i++){
		var r=rcs.element(i);var radio="";
			var d=document.getElementsByName(r.key);
			if(r.value==="radio"){
				for(j=0;j<d.length;j++){
					if(d[j].checked){radio=d[j].value;}
				}				
			}else{
				for(j=0;j<d.length;j++){
					if(d[j].checked){radio+=","+d[j].value;}
				}
				radio.substr(1);
			}
			sb.append("\""+r.key+"\":\""+radio+"\"");
		}
	}
	return "{"+sb.toJsonString()+"}";
}
  

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Extjs4的FormPanel从后台load json数据的要点

    给定的部分内容中还包含了一个C#的方法,用于将`.NET DataTable`转换成JSON字符串: ```csharp public static string ToJson(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder....

    Android客户端与服务器端的json数据交互(内含大量知识点)

    例如,要发送一个包含用户名和密码的登录请求,可以这样构建JSON字符串: ```java JSONObject json = new JSONObject(); try { json.put("username", "testUser"); json.put("password", "testPass"); } catch ...

    WinForm下WebView2实现JS与C#交互Demo

    这个`CallJsFunctionFromCSharp`方法接受一个函数名和任意数量的参数,将其序列化为JSON字符串并拼接成JavaScript调用语句。 通过以上步骤,我们已经在WinForm应用中实现了WebView2控件的集成,让JavaScript可以...

    ajax传值到servlet

    例如,可以写入JSON字符串: ```java response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); String result = "{\"status\":\"success\",\"message\":\"操作成功\"}"; response....

    ajax提交中文乱码解决方法

    - **使用`URLEncoder`编码**:在发送请求之前,可以先使用Java的`URLEncoder.encode()`方法将中文字符串进行编码,然后再发送到服务器。示例代码如下: ```javascript data: {"innerId": innerId, "flag": 1, ...

    ASP.NET面试问题集结

    - 上述示例展示了如何将一个字符串数组转换为 `ArrayList` 对象。 - 注意 `ArrayList` 类型已不再推荐使用,建议使用泛型集合如 `List&lt;T&gt;` 来替代,这样类型安全性更高,性能也更好。 ##### 4. 字符串与 ...

    java基础知识

    - 字符串拼接操作。 - 字符串查找方法。 2. **JDK5新特性**: - 泛型(Generics):类型安全、代码重用。 - 自动装箱/拆箱:简化基本类型与包装类之间的转换。 - for-each循环:遍历数组或集合更简洁。 - 可变...

    Java学习笔记-个人整理的

    {4.14}数组转换为集合}{89}{section.4.14} {4.15}Map的迭代}{90}{section.4.15} {4.15.1}字符统计}{91}{subsection.4.15.1} {5}格式化输入输出}{94}{chapter.5} {5.1}时间与日期}{94}{section.5.1} {5.1.1}...

    provalp3questao4:使用Spring Boot创建一个Web应用程序,该应用程序显示一个供用户输入其姓名和按钮的字段。 单击该按钮时,应用程序必须提供反向写的用户名

    然后,我们可以将接收到的姓名字符串反转,并用`@ResponseBody`返回结果。例如: ```java @PostMapping("/reverseName") public String reverseName(@RequestBody Map, String&gt; formData) { String name = ...

Global site tag (gtag.js) - Google Analytics