AXGrid에서 setList() 사용 시 오류 개선요구..
안녕하세요.
AXGrid 사용 시 setList()할 때 ajaxPars값을 오브젝트로 넘기려고 할 때 오류 부분에 있네요.
또한, 검색어를 &를 넣을 때도 오류가 납니다.
이 부분은 axdom.fn.serializeObject에서도 비슷한 문제가 있었는데요.
폼 안에 &나 =같은 특수문자를 넣게 되면 데이터가 잘리는 현상이 있어서 AxisJ에서 제공하는
직렬화메소드를 사용하지 않고, 저희는 이름이 중복되는 이유로 serializeObject2를
만들어 사용하고 있습니다.
$.fn.serializeObject2 = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
아래는 예시입니다.
a.jsp
//검색화면에서 검색 버튼 클릭시(AXSearch 미사용)
var params = $("#searchForm").getFormObject(); //form 내에 데이터를 오브젝트 형태(name, value) 값으로 변환해서 가져옴.
grid.setList({
contentType: "application/json; charset=utf-8",
type: "POST",
dataType: "json",
ajaxUrl: "/json/system/userList.json",
ajaxPars: params,
onLoad:function() {
}
});
AXJ.all.js 변경..
-- 15327라인 근처
var pars;
if (Object.isString(obj.ajaxPars)) {
appendPars.push(obj.ajaxPars);
pars = appendPars.join('&');
}
else if (Object.isObject(obj.ajaxPars)) {
appendPars.push(axdom.param(obj.ajaxPars));
obj.ajaxPars.pageNo = ((exts == "paging") ? this.page.pageNo : 1);
obj.ajaxPars.pageSize = this.page.pageSize;
pars = obj.ajaxPars;
}
감사합니다.
params를 var params = $("#searchForm").serialize() 이렇게 사용하시면 안되는 경우인가요?
var params = $("#searchForm").serialize() // params를 이렇게...
grid.setList({
contentType: "application/json; charset=utf-8",
type: "POST",
dataType: "json",
ajaxUrl: "/json/system/userList.json",
ajaxPars: params,
onLoad:function() {
}
});
var params = $("#searchForm").serialize();를 하게 되면 한글이
%ED%95%9C%EA%B8%80 모양으로 변환됩니다.
이럴 경우 다시 한번 %ED%95%9C%EA%B8%80->문자열로 파싱처리를 해야하는 번거로움이
있네요.
encodeURIComponent('한글') -> "%ED%95%9C%EA%B8%80"
한글이나 특수문자등은 당연히 인코딩되어서 서버로 전달되어야 합니다. 그렇지 않으면 특수문자등의 문제가 생기게 됩니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
위 링크를 참고하세요.
그리고 벡엔드 언어를 뭘사용하시는지 모르겠지만 요즘 대부분의 웹프레임워크는 다 자동으로 decoding을 해줍니다.