반응형
- ajax로 php에 단순 배열 전달
- ajax로 php에 JSON 객체 전달
- php에서 배열을 받고 값 사용
- php에서 JSON 객체 받고 사용
- php에서 클라이언트로 JSON 객체 넘기기
- JSON 객체 한글이 유니코드로 나올 때
이렇게 6가지 내용 다뤄보겠습니다.
먼저 클라이언트 부분
<script>
function send_test() {
// 전달할 객체 1 (단순 배열)
var arr = new Array();
arr[0] = "woohyeon";
arr[1] = "25";
arr[2] = "male";
arr[3] = "한글";
// 전달할 객체 2 (JSON)
var json_data =
{
"name" : arr[0],
"age" : arr[1],
"gender" : arr[2],
"etc" : arr[3]
};
// JSON 문자열로 변환
json_data = JSON.stringify(json_data);
$.ajax({
url: "test_server.php",
type: "post",
data: {
arr_ : arr,
json_ : json_data
},
success: function(val) {
console.log(val);
}
});
}
</script>
특별한 설명은 없고 위 코드와 아래 php코드, 결과 보시면 쉽게 해 보실 수 있다고 생각합니다.
php에서 echo로 넘긴 값을 클라이언트에서 성공적으로 받을 경우 ajax의 success의 function() 함수가 실행되는데 여기서 매개변수인 val에 php가 반환한 값(echo 값)을 인자로 전달합니다.
아래 php에서 json 객체를 반환하기 때문에 결과로 json 객체를 콘솔 화면에 찍을 것입니다.
PHP (서버)
<?php
// 유니코드 에러 (json객체 반환 시 한글이 유니코드로 나올 때)
function raw_json_encode($input) {
return preg_replace_callback(
'/\\\\u([0-9a-zA-Z]{4})/',
function ($matches) {
return mb_convert_encoding(pack('H*',$matches[1]),'UTF-8','UTF-16');
},
json_encode($input)
);
}
// 단순 배열
$arr = $_REQUEST['arr_']; // $arr[0] == "woohyeon"
// json 객체
$json = $_REQUEST['json_'];
$json = json_decode($json); // $json->gender == "male"
// json 객체 반환
echo raw_json_encode($json);
?>
php에서 단순 배열은 $arr[0]과 같이 인덱스로 접근하시면 됩니다.
json 객체는 json_decode()를 통해 배열 또는 객체로 변환 후 $json->name, $json->age 이런 식으로 접근하시면 됩니다.
반환 시 단순히 json_encode()를 사용하면 한글이 유니코드로 나오더라고요. 그래서 전에 어떤 블로그에서 raw_json_encode() 함수를 보고 해결했는데 출처가 기억이 안 나네요.
도움이 되셨다면 공감 버튼 한 번씩 눌러주세요~
'기타 분야 > Web' 카테고리의 다른 글
REST API / RESTful (0) | 2019.11.19 |
---|---|
[PHP] 특정 문자열 포함하는지 확인하는 strpos 함수 (0) | 2019.11.04 |
[PHP] php 문자열 자르기, 추출 substr() 함수, 문자열 길이 strlen (0) | 2019.10.25 |
[JQuery] jquery 셀렉트박스 선택하기 / select2, select (0) | 2019.10.25 |
[JQuery] 티스토리 또는 웹사이트에 상단 하단 스크롤 이동 버튼 추가 / JQuery, js, scrollTop, animate, 스크롤 감지 (0) | 2019.10.18 |
댓글