form 에서 json을 이용해 배열 넘기기
쇼핑몰 솔루션에서 선택옵션 관련 부분을 작업 중인데.. 선택한 옵션 정보를 배열로 저장해서 php 파일에
넘겨야 할 필요성이 생기게 됐다. input 에 배열값을 저장해서 넘기게 되면 value,value.. 이런 식의 문자값이
넘어오게 되는데.. 물론 , 구분자로 사용해서 다시 배열을 만들어도 되지만 넘어온 값 중에 , 가 들어간 값이
있다면 원치 않는 결과가 나올 수도 있기 때문에 배열을 그 상태로 넘기고 싶었다.
<form id=”formid” method=”post” action=”formupdate.php”>
<input type=”hidden” name=”arr” value=”” />
……..
</form>
이런 식으로 구성되어 있을 경우 자바스크립트로 배열을 만들고 이걸 json 포맷으로 변경한 후 arr의 값에 저장한다.
<script>
var myObject = new Object();
var arr_val = new Array();
arr_val.push(val1);
arr_val.push(val2);
myObject.value = arr_val;
// json 포맷으로 변환
var values = JSON.stringify(myObject);
$(function() {
$(‘input[name=arr]’).val(values);
});
</script>
대략 이런 식으로 진행하면 json 포맷의 값을 input 에 저장할 수 있다. JSON.stringify 관련 에러가 발생하면
브라우저에서 json을 지원하지 않는 경우일 수 있으므로 json 관련 파일을 로드해주면 된다.
관련파일 : https://github.com/douglascrockford/JSON-js/blob/master/json2.js
저리 넘기면 arr={“”:”” , “”:””}이런식으로 넘어가는데요.
혹시 저기 “arr=”없애고 {“”:”” , “”:””}이것만 넘길수잇는 방법은 없나요?
안녕하세요.
jQuery를 사용하신다면 .serializeArray() 를 사용하시면 됩니다.
https://api.jquery.com/serializeArray/