/**
* 예제 :
* var data = new Map();
* data.put("key1", "value1");
* data.put("key2", "value2");
* data.get("key1");
* data.size();
*
*/
Map = function(){
this.map = new Object();
};
Map.prototype = {
put : function(key, value){
/*if ( value.constructor == Array ){
for ( var i =0 ; i < value.size(); i++ ) {
this.map[key] = value[i];
alert(i + key + " : " + value[i]);
}
alert('This is an array!' + value.legnth);
}else{*/
this.map[key] = value;
/*}*/
},
get : function(key){
return this.map[key];
},
containsKey : function(key){
return key in this.map;
},
containsValue : function(value){
for(var prop in this.map){
if(this.map[prop] == value) return true;
}
return false;
},
isEmpty : function(key){
return (this.size() == 0);
},
clear : function(){
for(var prop in this.map){
delete this.map[prop];
}
},
remove : function(key){
delete this.map[key];
},
keys : function(){
/*var keys = new Array();
for(var prop in this.map){
keys.push(prop);
}
return keys;*/
var keys = new Array();
var resVal = "";
var count = 0;
for(var prop in this.map){
keys.push(prop);
if(count > 0){
resVal += "_";
}
resVal += prop;
count++;
}
return resVal;
},
values : function(){
/*var values = new Array();
for(var prop in this.map){
values.push(this.map[prop]);
}
return values;*/
var values = new Array();
var resVal = "";
var count = 0;
for(var prop in this.map){
values.push(prop);
if(count > 0){
resVal += "_";
}
resVal += this.map[prop];
count++;
}
return resVal;
},
size : function(){
var count = 0;
for (var prop in this.map) {
count++;
}
return count;
}
};
Key와 Values는 _ 를 이용하여 구분자를 사용하였다. JavaScript Taraditional을 사용하게 될경우 배열의 형태가 깨질 우려가 있기 때문에 배열의 구분자는 사용하지 않아야 한다.
Ajax 보내는 부분에서 data 불러오기
function _fnCallJson(reqURL, data, async, callback) {
// 처리시는 동기화
$.ajaxSetup({
async : false
});
var args = "";
// callback 함수가 null일시에 값만 return 해준다.
var _response;
var defaultAsync = false;
var resDataType = "json";
if (data != null && data.size() > 0) {
var keys = data.keys().toString().split('_');
var values = data.values().toString().split('_');
alert("_fnCallJson Key : " + data.keys().toString() + " val : "+ data.values().toString());
for (var i = 0; i < keys.length; i++) {
if (i > 0)
args += "&";
if (keys[i].length > 0)
args += keys[i] + "=" + values[i];
}
}
if (callback != null ){
}
//else{
// resDataType = "html";
//}
var resAsync = "";
if (async != null && async.length > 0) {
resAsync = async;
} else {
resAsync = defaultAsync;
}
$.ajax({
type : "POST",
url : reqURL,
data : args,
async : resAsync,
traditional : true,
contentType : "application/x-www-form-urlencoded; charset=utf-8",
dataType : resDataType, // xml, html, json, jsonp, script, text
success : function(data) {
if (callback != null ) {
callback(data);
}else{
//_response = $.parseJSON(data);
_response = data;
}
}
});
return _response;
// 처리시는 동기화
$.ajaxSetup({
async : false
});
}