아이디어는 간단하다  Dom Object를 동적으로 생성할때나
동적으로 함수를 호출할때 리터럴 객체를 인자로 전달하는게 일반 인자를 쭉 나열하는것보다 편하다
이유는
1. 객체 쪽에 속성을 추가하면 함수 인자를 추가하는 효과가 있다.
2. 인자 리스트가 지저분하게 길어지지 않는다.
3. 인자의 순서를 신경쓸 필요가 없다.
그리고 가장 중요한 편한점중 하나는 유지보수 및 관리가 편하다는 것이다.

// 포매터
function myFormatter(cellvalue, options, rowObject) {
	var retString = "";
	var strJsonText = JSON.stringify(rowObject);
    strJsonText = strJsonText.replace(/\"/gi, "'");
    	
    // 문항관리
	if ( cellvalue.toUpperCase() == "QUESTION_MGMNT" ) {
		retString = "문항관리";
	}
    // 미리보기
	else if ( cellvalue.toUpperCase() == "PREVIEW" ) {
		retString = "미리보기";
	}
    // 진단명
	else if ( /(.+)/gi.test(cellvalue) == true ) {
		retString = "" + cellvalue + "";
	}
	else {
		retString = cellvalue;
	}
    
	return retString;
}

4-5번째 줄을 살펴보면 리터를 객체를 받아서 jsontext로 변경해서 붙여준다.
posted by 뚱2
거창한건 아닙니다. 그냥 간단한 Tip입니다.
json으로 비동기 통신을 하다보면은 결과 값을 json Text로 받는 경우가 있습니다.


이걸 Javascript Object 로 변경주어야 스크립트 단에서 사용 할 수 있습니다.

    // 승인
	$("#btn_approval").click(function() {
		var selRows = $(DF.ID.GRID_MAIN).getGridParam("selarrrow");
		if ( selRows.length == 0) {
			alert("항목을 선택해 주세요.");
			return;
		}
			
		$.ajax({
		     type: 'POST'
		    ,url : DF.URL.APPROVAL
		    ,data: {id : selRows}
			,success: function(data) {
				var ret = eval("(" + data + ")");
				if (ret.success == "true") {
					alert(ret.message);
					$(DF.ID.GRID_MAIN).trigger("reloadGrid");
				}

		    }
			,error: function(result) {
		    }
		});		
	});

14번째의 줄 같이 넘어온 값을 "()"로 묶어서 eval함수를 실행해 주시면 됩니다.

* 추가 2012-02-07
eval을 사용하는건 보안상 위험이 있습니다. JSON.parse ( http://www.json.org/ ) 사용하는걸 권장합니다.




'JavaScript > Json' 카테고리의 다른 글

[JSON] douglascrockford json2.js download  (0) 2013.11.25
[JSON] JSON  (0) 2012.10.30
[Json] Json Text <-> Json Object 변환  (0) 2011.11.01
posted by 뚱2