오늘날 인터넷에서 AJAX는 더 이상 낯선 단어가 아닙니다. AJAX라고 하면 RSS로 인해 등장한 XML이 바로 떠오를 수도 있다. XML 구문 분석은 아마도 더 이상 문제가 되지 않을 것입니다. 특히 PHP5와 가장 가벼운 SimpleXML과 같은 다수의 XML 구문 분석기의 등장에서는 더욱 그렇습니다. 그러나 AJAX의 경우 XML 구문 분석은 프런트 엔드 Javascript 지원에 더 가깝습니다. XML을 파싱해본 사람이라면 누구나 트리와 노드로 인해 혼란스러울 것이라고 생각합니다. XML이 매우 좋은 데이터 저장 방법이라는 것은 부인할 수 없지만 XML의 유연성으로 인해 구문 분석이 어렵습니다. 물론 여기서 언급한 어려움은 이 글의 주인공인 JSON과 관련이 있다.
JSON이란 무엇인가요? 나는 그 개념을 반복하지 않을 것이다. 일반인의 관점에서 보면 이는 PHP 직렬 문자열과 같은 데이터 저장 형식입니다. 데이터 설명입니다. 예를 들어 배열을 직렬화하여 저장하면 쉽게 역직렬화하고 적용할 수 있습니다. 클라이언트 측 Javascript와 서버 측 PHP 사이에 대화형 브리지를 구축한다는 점을 제외하면 JSON의 경우에도 마찬가지입니다. 우리는 PHP를 사용하여 JSON 문자열을 생성한 다음 이 문자열을 프런트 엔드 Javascript에 전달합니다. Javascirpt는 이를 JSON으로 쉽게 변환한 다음 적용할 수 있습니다. 간단히 말해서 실제로는 배열처럼 보입니다.
본론으로 돌아가서 JSON을 사용하는 방법입니다. PHP5.2에는 JSON에 대한 지원이 내장되어 있습니다. 물론 이 버전보다 낮은 경우에는 시중에 많은 PHP 버전 구현이 있으므로 원하는 버전을 사용하면 됩니다. 이제 우리는 주로 PHP의 JSON 내장 지원에 대해 이야기합니다. 매우 간단하고 두 가지 함수: json_encode 및 json_decode(직렬화와 매우 유사) 하나는 인코딩용이고 하나는 디코딩용입니다. 먼저 인코딩 사용법을 살펴보겠습니다.
$arr = array(
'name' => 'Chen Yixin',
'nick' => 비어 있음',
'연락처' => 배열(
'이메일' => 'qq dot com의 shengong',
'웹사이트' => 'http://www.chinaz.com ',
)
);
$json_string = json_encode($arr);
echo $json_string; UTF-8이 아닌 인코딩에서는 한자를 인코딩할 수 없으며 결과는 null이 됩니다. 따라서 gb2312를 사용하여 PHP 코드를 작성하는 경우 iconv 또는 mb를 사용하여 포함된 내용을 변환해야 합니다. 그런 다음 중국어를 UTF-8로 json_encoded하고 위의 출력 결과는 다음과 같습니다.
{"name":"u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email": "shenkong at qq dot com ","website":"http://www.chinaz.com"}}
연재와 매우 유사하다고 말씀드렸지만 아직도 믿지 못하시네요. 인코딩 후에는 디코딩이 필요합니다. PHP는 해당 함수 json_decode를 제공합니다. json_decode가 실행된 후 작업은 다음과 같습니다.
$arr = 배열 (
'이름' => '첸 이신',
'nick' => '딥 스카이', '연락처' => array(
'이메일' => ' shenkong at qq dot com' ,
'웹사이트' => 'http://www.chinaz.com',
)
)
$json_string = json_encode($arr);
$obj = json_decode ($json_string);
print_r($obj);
?>
객체의 속성에 액세스할 수 있나요? $obj->name은 물론 쉽게 호출할 수 있도록 배열로 변환할 수도 있습니다.
$json_string = json_encode($arr)
$arr = (array) $obj;
print_r($arr); 배열을 직접 저장하지만, 이를 사용하기 위해 Javascript를 사용하면 그 효과가 나타납니다. 문자:
위에서 이 문자열을 변수에 직접 할당하면 자바스크립트 배열이 됩니다. (전문용어에서는 배열이라고 부르면 안 되지만, PHP의 습관상 이해를 돕기 위해 항상 배열이라고 부르겠습니다.) ). 이러한 방식으로 쉽게 arr을 탐색하거나 원하는 작업을 수행할 수 있습니다. 아직 AJAX에 대해서는 언급하지 않았죠? 예, 생각해 보세요. 서버에서 반환된 responseText가 XML 대신 JSON 문자열을 사용한다면 프런트 엔드 Javascript가 이를 처리하는 것이 매우 편리하지 않을까요? 이것이 개 피부 석고가 사용되는 방법입니다.
사실 이 글을 쓰면서 데이터 저장 형식이 다른 것 외에는 JSON과 XML이 큰 차이가 없는데, 아래에서 한 가지 언급하겠습니다. XML과는 거의 관련이 없지만 JSON의 광범위한 적용, 즉 도메인 간 데이터 호출을 설명할 수 있습니다. 보안 문제로 인해 AJAX는 도메인 간 호출을 지원하지 않습니다. 다른 도메인 이름으로 데이터를 호출하는 것은 매우 번거롭습니다. 해결책이 있지만(Stone은 강의에서 프록시를 언급했지만 이해하지는 못하지만 알고 있습니다) 해결될 것입니다). 저는 도메인 간 호출을 보여주기에 충분한 두 개의 파일을 작성했습니다.
기본 파일 index.html
조정된 파일 profile.php
$arr = array(
'name' => ' Chen Yixin',
'nick' => ''deep space', 'contact' => array(
'email' => 'qq dot com의 shengong',
'웹사이트' => 'http://www.chinaz.com',
)
)
$json_string = json_encode($arr)
echo "getProfile($json_string)" ;
?>
분명히 index.html이 profile.php를 호출하면 JSON 문자열이 생성되어 getProfile에 매개변수로 전달된 다음 별명이 div에 삽입됩니다. 이렇게 하면 도메인 간 데이터 상호작용이 완료됩니다. 정말 간단하지 않나요? JSON은 너무나 간단하고 사용하기 쉬우니 무엇을 기다리시나요
더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!