>  기사  >  웹 프론트엔드  >  Ajax 프런트엔드 연관 배열을 json에서 백그라운드 방법으로

Ajax 프런트엔드 연관 배열을 json에서 백그라운드 방법으로

php中世界最好的语言
php中世界最好的语言원래의
2018-03-16 10:28:442162검색

이번에는 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 문자열은 불완전합니다. 예, 전체 배열은 직접 구문 분석할 수 없습니다

그림에 표시된 것처럼

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.