CI 묻고 답하기

제목 javascipt의 연관 배열을 뷰페이지로 보낼려면 어떻게 해야되나요?
글쓴이 정수리 작성시각 2016/08/30 09:09:52
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 15820   RSS

javascipt에서 연관배열을 생성하여

 

팝업창을 띄우기 위해 

"http://localhost/jds/index.php/gigwan_c/tax_mopopup/"+cf_info;

이렇게 경로의 마지막에 연관배열을 붙이고 팝업창을 띄우니 

 

허락되지 않은 문자열이 있다? 라는 에러가 발생하더라구요

 

그래서 cf_info 부분을 지우고 실행해보니 팝업창이 잘 뜹니다

 

하지만 cf_info에 데이터가 들어 있어서 이것을 저경로를 통해 보내야 하는데

 

어떻게 해야 보낼수 있죠?

javacript 코드

​
var cf_info = new Object();
		cf_info["cf_pk"] = cf_pk;
		cf_info["cf_tax_date"] = $('#tax_info td').eq(2).text();
		cf_info["cf_tax_name"] = $('#tax_info td').eq(4).text();
		cf_info["cf_tax_bh"] = $('#tax_info td').eq(6).text();
		cf_info["cf_tax_re"] = $('#tax_info td').eq(8).text();
		cf_info["cf_tax_email"] = $('#tax_info td').eq(11).text();
		cf_info["cf_team"] = $('#tax_info td').eq(13).text();
		cf_info["cf_tax_rename"] = $('#tax_info td').eq(15).text();
		cf_info["cf_tax_cf"] = $('#tax_info input[name="cf_tax_cf"]').val();
		cf_info["cf_tax_memo"] = $('#tax_info td').eq(20).text();
		console.log(cf_info);
		var cf_pk=global_cfpk;
		alert(cf_pk);
		var popUrl ="http://localhost/jds/index.php/gigwan_c/tax_mopopup/"+cf_info; //cf_info 포함시 오류발생가 발생하네요 ㅜㅜ
		var popoption = "width=780, height=520, resizable=no, scrollbars=no, status=no;";
			window.open(popUrl,"",popoption);

 

 다음글 초보 (2)
 이전글 안녕하세요 ciboard로 공부 중인 사람입니다. (2)

댓글

변종원(웅파) / 2016/08/30 09:37:01 / 추천 0

php건 자바스크립트건 배열을 스트링으로 표현하려면 어떻게 해야할까요?

json 같은 스트링 형태로 변경하고 주소에서 사용할 수 있도록 url_encode 해줘야 합니다.

정수리 / 2016/08/30 13:45:39 / 추천 0

@변종원(웅파)

답변 정말감사합니다.

달아주신 답변을 참고하여 json.stringify()함수를 사용하여 배열은 json문자열로 만들어 준후

encodeURI()함수로 인코딩 해준 후 url 뒤에 붙인 뒤 실행을 해도 

The URI you submitted has disallowed characters.

이 오류는 똑같이 발생하네요 ;;

url 은 

http:/xxx.xx.xx.x/jds/index.php/gigwan_c/tax_mopopup/%7B%22cf_pk%22:%2213%22,%22cf_tax_date%22:%222016-08-01%22,%22cf_tax_name%22:%22%EC%A0%95%EC%83%81%ED%9B%88%22,%22cf_tax_bh%22:%222016-08-02%22,%22cf_tax_re%22:%221%22,%22cf_tax_email%22:%22gnsdl106@naver.com%22,%22cf_team%22:%22%EC%9B%B9%ED%8C%80%22,%22cf_tax_rename%22:%22%EA%B0%9C%EB%B0%9C%22,%22cf_tax_cf%22:%220%22,%22cf_tax_memo%22:%22%22%7D

이렇게 들어가구요 ㅜㅜ 복사해서 붙이니 저렇게 표현되네요;; 해당창에서 URL을 봤을때 URL뒤에 JSON 문자열이 그대로 붙어있더라구요

말씀하신대로의 절차를 거쳐서 넘긴것인데 어느시점에서 문제 인건지..

var cf_info = {
			cf_pk: cf_pk,
			cf_tax_date:  $('#tax_info td').eq(2).text(),
			cf_tax_name:  $('#tax_info td').eq(4).text(),
			cf_tax_bh: $('#tax_info td').eq(6).text(),
			cf_tax_re: $('#tax_info td').eq(8).text(),
			cf_tax_email: $('#tax_info td').eq(11).text(),
			cf_team: $('#tax_info td').eq(13).text(),
			cf_tax_rename: $('#tax_info td').eq(15).text(),
			cf_tax_cf : $('#tax_info input[name="cf_tax_cf"]').val(),
			cf_tax_memo: $('#tax_info td').eq(20).text()
		};

var cf_info=  JSON.stringify(cf_info);
		alert(cf_info);
	cf_info = encodeURI(cf_info);
		
	var popUrl ="http://172.19.93.9/jds/index.php/gigwan_c/tax_mopopup/"+cf_info;
	
     var popoption = "width=780, height=520, resizable=no, scrollbars=no, status=no;";
		window.open(popUrl,"",popoption);
정수리 / 2016/08/30 13:59:46 / 추천 0

자체 해결하였습니다

 

url뒤에 ?date="+cf_info를 한후 

보내준 뒤 php에서 

urldecode(), json_decode를 사용하여 해결하였습니다

답변달아주신 웅파님 감사합니다. 오늘도 새로운것을 배우네요^^