>웹 프론트엔드 >JS 튜토리얼 >json object_jquery로 직렬화된 jQuery 기반 확장 양식

json object_jquery로 직렬화된 jQuery 기반 확장 양식

WBOY
WBOY원래의
2016-05-16 18:14:171094검색
코드 복사 코드는 다음과 같습니다.

$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if ( !o[ this.name].push) {
o[this.name] = [ o[this.name] ]
}
o[this.name].push(this.value | | '' ); else {
o[this.name] = this.value ''
}
}); 🎜>

일반적인 객체 변환에는 이 기능으로 충분하지만, 객체에 하위 객체가 포함된 경우에는 지원되지 않습니다.
예를 들어 다음과 같은 형식이 있습니다.



코드 복사
코드는 다음과 같습니다.
"text" 이름 ="category.id" value="categoryId" id="name">



서버에 해당하는 도메인 클래스는 다음과 같습니다.



코드 복사
코드는 다음과 같습니다. public class DummyProduct { private DummyCategory 카테고리
private String name; getCategory() {
return 카테고리;
}
public void setCategory(DummyCategory 카테고리) {
this.category = 카테고리;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name
}

}
public class DummyCategory {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id; >}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name; 🎜>

양식 데이터를 서버측 도메인 클래스와 일치하는 json 문자열로 직렬화하려면 다음 확장자를 사용할 수 있습니다.




복사 code


코드는 다음과 같습니다.

/**@serializedParams는 "prop1=value1&prop2=value2"와 같습니다.  
'prop.subprop=value'와 같은 중첩 속성도 지원됩니다 **/
function paramString2obj (serializedParams) { var obj ={}; function evalThem (str) { var attributeName = str.split("=")[0] var attributeValue = str.split("=")[1]; 🎜>if(!attributeValue){ return ;
}

var array = attributeName.split(".")
for (var i = 1; i < array. length; i ) {
var tmpArray = Array();
tmpArray.push("obj")
for (var j = 0; j < i; j ) {
tmpArray. push(array[j]);
var evalString = tmpArray.join(".")
// Alert(evalString)
if(!eval(evalString))
eval(evalString "={ };");
}
}
eval("obj." attributeName "='" attributeValue "';")

};
var Properties = serializedParams .split("&");
for (var i = 0; i < Properties.length; i ) {
evalThem(properties[i]); >};
return obj;
}
$.fn.form2json = function(){
var serializedParams = this.serialize()
var obj = paramString2obj(serializedParams); 🎜>return JSON.stringify(obj) ;
}


아마도 다음과 같습니다:




코드 복사


코드는 다음과 같습니다.


var json = $("#testform").form2json()
alert(json);
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.