이번에는 ajax 프론트엔드의 연관배열을 json으로 백엔드로 변환하는 방법을 알려드리겠습니다. ajax 프론트엔드의 연관배열을 json으로 백엔드로 변환하는 주의사항은 다음과 같습니다. 실제 사례를 살펴보겠습니다.
많은 사람들이 Ajax가 값을 전송할 때 배열을 직접 전달할 수 없고 대부분의 Baidu 배열을 사용할 수 없다는 문제를 접했습니다.
그래서 생각해낸 방법은 다음과 같습니다.
1단계: 배열을 jsonString으로 변환
이것은 Baidu는 JSON.stringify(arr)가 연관 배열을 변환할 수 없다고 말했습니다. indexes배열에도 많은 단점이 있습니다
그래서 jsrecursive function
function arrToJSON(arr) { var json = {}; for (var i in arr) { var vo=arr[i]; if (typeof arr[i] == "object") { json[i]={}; json[i] = arrToJSON(vo); } else { json[i] =vo; } } return JSON.stringify(json); }
을 특별히 캡슐화했습니다. -차원 배열, 모든 배열을 문자열로 파싱할 수 있습니다
이런 식으로 ajax에 값을 전달할 수 있습니다~~~두 번째 단계:하지만 이렇게 변환된 json 문자열은 불완전합니다. 예, 전체 배열은 직접 구문 분석할 수 없습니다그림에 표시된 것처럼 이 함수는 슬래시를 사용하여 하위 수준 하위 json 문자열을 이스케이프 처리한다는 것을 알 수 있습니다. 배경 json_decode가 첫 번째 수준을 처리할 때 두 번째 수준은 실제로 여전히 json_decode 문자열입니다따라서 배경에는 이 json 문자열을 구문 분석하기 위한 새로운 디코드 함수가 필요합니다/** * 解析前台传来的不完整json字符串 */ private function json_decode_x($str) { $data_arr = array(); $arr = json_decode($str, 1); foreach ($arr as $x => $a) { if (preg_match('/":/', $arr[$x])) { //匹配 $data_arr[$x] = $this->json_decode_x($a); } else { $data_arr[$x] = $a; } } return $data_arr; }
위 내용은 Ajax 프런트엔드 연관 배열을 json에서 백그라운드 방법으로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!