개발/Javascript

[jquery] Ajax로 배열 파라미터 넘길 때 인코딩 깨지는 현상

신매력 2014. 6. 18. 17:47

자바스크립트에서 배열을 만들어서 ajax로 파라미터를 보내려고 했다.

 

아래처럼..

<script>
function test() {
	var a = new Array();
	a.push('aaa');
	a.push('bbb');

	$.ajax({
		url : '/test/save',
		method: 'post',
		data: {"value" : a},
		success : function(data) {
 			alert("성공");
 		}
 	});
}
</script>

 

 

내가 원한 요청 URL은 이거였다.

http://marobiana.tistory.com/test/save?value=aaa&value=bbb

 

 

근데 실제로 간것은.. 이렇게 깨짐 ㅎㅎ

http://marobiana.tistory.com/test/save?value%5B%5D=aaa&value%5B%5D=bbb

 

 

해결법은 아래코드를 ajax 호출전에 추가하면 된다.

jQuery.ajaxSettings.traditional = true;

 

 

스택오버플로에서 찾았는데,

jquery 1.4 이상부터 

요즘 스크립트 언어(루비나 php)같은 프레임워크를 수용하기 위해

반복적인 파라미터의 경우 자동으로 serialize를 한다고한다.

 

그것을 막으려면 저 세팅을 해주면 되는 것이다.

 

 

 

* 주의할 점

 

ajax에서 배열 넘길 때  data:{"value[]" : a},   

이렇게 [] 표시를 붙이는 경우가 있는데 그것을 붙이면 안.된.다.