/**


 * 예제 :

 *   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

});

}

Posted by MIDDLE
,