개발 Q&A

제목 ajax로 가져온 데이터를 json.parson했는데 오류가 발생하네요.
카테고리 JavaScript
글쓴이 정수리 작성시각 2016/12/06 10:53:05
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 16250   RSS

화면에 출력되고 있는 데이터를 엑셀파일로 다운 받을수 있게 만들려고 합니다.

 

button을 클릭하면 jquery에서 현재 url을 가져와 url에 따라 ajax통신을 할때 필요한

 

url을 만들어 ajax통신을 하여 데이터를 가지고 옵니다.

 

가지고 온 데이터를 alert했을시 [object objec] 출력이 되어

json.parse를 사용하여 배열로 만든 후 excel로 처리 하는 controller로 보내줄려고 합니다.

 

문제점과 궁금한 점이 있는데

 

문제점의 경우

 

json.parse를 했을 경우 

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

이러한 오류가 발생합니다.

[{"gg_na":"\uac15\ub989\uc2dc\uccad","uj_year":"2016","cf_ask_exdate":"0000-00-00","cf_ask_pr":"0","cf_ask_date":"0000-00-00","cf_result":"3750000","cf_askyb":"0","cf_tax_cf":"0","cf_ac_cf":"0","pg_pk":"2","pg_name":"\uacc4\uc57d\uc815\ubcf4\uacf5\uac1c\uc2dc\uc2a4\ud15c","gg_pk":"71","gg_local":"\uac15\uc6d0\ub3c4"}...}]

브라우저 개발자도구에서 확인했을때 json문자열로 데이터를 가져오는것을 확인하였습니다.

 

궁금한 점은 

javascript 배열을 php로 보낼때는 그냥 보낼수가 없어 

json 문자열로 만든 후 php로 보내어 php에서 사용하는 것으로 알고 있습니다.

그렇다면 제가 처음 위에서 말한 절차대로라면 ajax를 통해 데이터를 가져왔을경우

json.parse를 하지 않고 바로 php로 보내면 되지 않나요?

그렇게 해보았는데 object로 넘어가버리더라구요;;

 

화면에 출력되는 데이터의 경우 고정적인 데이터가 아니라 검색을 통해 데이터 내용이 변경 될수도 있기에

ajax를 사용하여 현재 화면에 출력되고 있는 데이터를 가지고와 excel로 처리하는 부분으로 넘겨준 후

엑셀로 다운이 가능하도록 처리 할려고 합니다.

현재 생각나는 방법은 저 절차 밖에 없어서 저 절차대로 만들려고 하는데 생각보다 쉽지가 않네요 ㅜㅜ

$('button[name="tax_excel"]').click(function(){
		var curl = location.href.split('/');

		 var method = curl[6];
		var url;
		var test;
		switch(method){
			
			case 'tax_list':
				url = urlinfo()+'tax_c/tax_list_data';
				test = tax_list(url);
				alert(JSON.parse(test));
				
		
		}
		
		
	});

function tax_list(url){
		var date;
		return $.ajax({
					type:'post',
					dataType:'json',
					url:url,
				}).done(function(data){
					
			});
	}
 다음글 인젝션 공격 중 이런걸 어떻게 막을 수 있을까요 ? (2)
 이전글 사이트 내 랜덤하게 무한 로딩에 빠지고 멈추는 현상의 ... (5)

댓글

/ 2016/12/06 11:23:37 / 추천 0

JSON.parse << 이건 json형식의 문자열을 json으로 변경해 주는건데요.. 

위에 

url = urlinfo()+'tax_c/tax_list_data';
                test = tax_list(url);
                alert(JSON.parse(test));

위에 말한 내용을 처럼 하려면 JSON.stringify(test)로 문자열로 만드실 수 있습니다.

위에 보면 test가 object인가요? tax_list가 어떤 함수인지는 모르나 test를 json형식으로 변환하셔야 합니다.

https://ko.wikipedia.org/wiki/JSON

정수리 / 2016/12/06 12:37:53 / 추천 0

@닉

답변감사합니다 

alert(test)를 했을시 [object object] 이렇게 출력이 되더라구요

말씀하신 json.parse(test)를 하고 alert(test)해보니

{readyState:1} 이렇게만 뜨네요;

tax_list함수는 url을 보내주면 ajax통신을 통해 데이터를 가져와 return 해주는 방법으로 할려고 만든 함수 인데

ajax로 데이터를 가져와서 return을 할경우 데이터가 없어진다고 하여 ajax 자체를 리턴해주었습니다.

그렇다 보니 test에 ajax객체 자체가 들어간 것 같습니다;

그러면 test안에 있는 ajax객체에서 ajax로 가지고 온 데이터를 어떻게 가져다 사용할수 있죠?

/ 2016/12/06 15:50:07 / 추천 0

test.done(function(data){

console.log(data)

});

done대신 .. always, when, done, then ...

참고.. ) http://blog.naver.com/PostView.nhn?blogId=djawl_2&logNo=50184671092&redirect=Dlog&widgetTypeCall=true