개발 Q&A

제목 ajax를 오늘 하루 공부하면서 이해안되는 부분이 있어서 질문드립니다.
글쓴이 정수리 작성시각 2016/08/11 17:37:32
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 12155   RSS

우선 긴글읽어주셔서 감사합니다. 

kaido님께도 우선 감사하다는 말씀드리고 싶습니다. 

내주신 미션을 수행하면서 새롭게 배운것도 있고 여전히 모른것도 있지만

그래도 나름 미션때문에 여기저기 헤매지 않고 미션에만 집중하여서 그런지 공부가 잘된것 같습니다.

공부를 하던 중 아직도 헷갈리는 부분은 json으로 데이터를 받어와 데이터를 출력할때 인데 $.ajax({ dateType="json" }) 을 할경우 json_parse()함수가 안먹히더라구요 

그리고 서버페이지라고 해야 하나? 요청페이지에서 데이트를 받고 데이터를 가공하고 출력하는 페이지에서 echo json_encode()함수를 사용하여 출력시에도 json_parse()함수를 사용하면 오류페이자 나는것을 확인 하였습니다. 

저부분에서 왜 datType=json명시하고 json_parse함수를 쓰면 왜 에러가 나는지 생각해보았습니다. 

오랜 생각 끝에 나름 제 나름 생각한것은 ajax통신을 요청하는 페이지를 A 요청을 받아 데이터를 가공하여 출력해주는 페이지 B페이지라고 하겠습니다. 

dataType=json  이부분의 경우 리턴받는 데이터의 형식을 정해주는 것입니다. 그렇게 datType=json이라고 명시하면 A 페이지에서는 돌아오는 데이터의 형식이 json형식으로 인식하는것 같습니다. json_encode 함수의 경우 데이터를 json형식으로 만들어주는 함수 입니다. 

A 페이지에서는 돌려받는 데이터의 형식이 json데이터라고 알고 있기때문에 B 페이지에서 그냥 echo문을 데이터를 통해 출력을 할경우 데이터형식이 json형식이 아니기에 오류가 발생합니다.

이때 json_encode 함수를 사용하여 json형태로 만들어주고 출력을 하면 정상적으로 출력이 잘됩니다. 

dataType=json이라고 명시하지 않고 B페이지에서 json 형태로 문자열을 만들어 보내주면  A페이지에서는 이게 어떤 형식으 데이터인지 모르기에 json.parse을 통해 json데이터를 자바스크립트나 jquery가 사용할수 있는 객체데이터로 변환 해줍니다. 

제 나름 정리한것인데 정확하게 개념을 이해한것 같지는 않습니다. 

dateType=json으로 해놨을 경우 B페이지에서 json형태로 문자열을 만들어 출력해주면 json형식이니 json_parse를 통해 자바스크립트가 사용할수 있는 데이터로 만들어주는데 왜 오류가 나는것인지 아직도 이해가안되네요

ㅜㅜ 그리고dateType=json을 명시하지 않고 B페이지에서 json구조로 바꿔줄려면 일일히 작성하기가 힘들더군요 

dateType=json명시 하고 B페이지에서 json구조로 작성해줄필요 없이 json_encode를 통해 쉽게 json데이터로 쉽게 변경할수 있더라구요. 

제가 오늘 ajax를 공부하면서 나름 알아낸것인데 포럼에 계신 많은 고수님들께서 봐주시고 잘못된 개념은 바로 잡을수 있도록 알려주셨으면 감사합니다 ㅜㅜ 

프로젝트 진행하다보니 ajax의 필요성을 절실히 느껴서 공부했는데 나름쉽지가 않더라구요 ㅜㅜ 긴글읽어주셔서 감사합니다.

 다음글 ckeditor 관련 질문이용 (2)
 이전글 kaido님께서 내주신 미션을 수행중인데 막히는 부분이... (9)

댓글

/ 2016/08/11 17:54:32 / 추천 0
배운거 잘 정리해 놔서 라이브러리로 만들어 놔요 나중에 쓸때 편하게~~!
박준영 / 2016/08/11 18:00:07 / 추천 0
[{"fruit":"과일이름"]

이런식으로 echo 만 찍어주시면 json이라고 인식하기 보단 괄호가 있는 문자열로 인식합니다.

http header 에서 json이라고 content-type: application/json; charset=utf-8

이와같이 써주거나 그냥 간편하게 json_encode 라고 하는게 좋습니다. 그리고 한글로 보낼땐 JSON_UNESCAPED_UNICODE 꼭 써주세요.

박준영 / 2016/08/11 18:07:56 / 추천 0
추가로 ajax로 받는 쪽(js)에서 json으로 받으려면 보내는 쪽에서도 응답으로 내가 json 으로 보낸다는걸 명시해 줘야되죠.