이번에는 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; }이 경우 배경이 json 문자열을 수신하면 다음을 사용하세요. 함수 구문 분석을 통해 완전하고 정확한 다차원 배열을 얻을 수 있습니다제 비즈니스 요구로 인해 /"와 같은 문자열이 없으므로 이를 사용하여 하위 문자열에 여전히 JSON 문자열이 있는지 확인할 수 있습니다. 실제 프로젝트에서 사용한다면 정규판단을 수정해주세요물론 능력있는 분들은 첫 번째 단계를 완전한 json 문자열로 직접 변경하여 백그라운드에서 json_decode를 직접 사용하여 파싱할 수 있도록 마스터하셨을 거라 믿습니다. 방법은 이 기사의 사례를 읽은 후 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! JS js 및 캔버스 합성 이미지로 상위 페이지를 새로 고치려면 WeChat 공개 계정 포스터 기능 생성
위 내용은 Ajax 프런트엔드 연관 배열을 json에서 백그라운드 방법으로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!