이 글은 주로 json과 PHP 사이의 인코딩 변환 문제를 소개합니다. 이는 특정 참고 가치가 있습니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들은 이를 참고할 수 있습니다.
<br/>
<br/>
※ 전제: json과 php는 서로 상호 작용합니다. 데이터를 전달할 때 발생할 수 있는 데이터 변환 상황 처리(주로 배열의 경우):
☆ 프론트엔드 코드:
var arr = {"name":"张伟","age":19}; //此时生成的是json的数组
arr = json.stringify(arr); //此时将arr转换成 json的字符串类型
$.ajax({ type:"post", url:url, data:{arr:arr}, //将转换成字符串类型的json传递给php后台,换换成字符串类型后可以一次性传递多个数据 success:function(res){ console.log(res); } });
☆ 백엔드 코드(전달만 하는 경우) 문자열) :
map = $_POST['arr']; $map = json_decode($map);//json对象 解码之后PHP可以使用,但要用json的方法在后台使用$map->name echo $map->name; // 会输出到res中, 通过consolve.log(res) 可以直接输出
질문
PHP 및 JSON에서 배열을 전달하는 경우에 대한 두 가지 방법이 배경에서 전면으로 전송하는 두 가지 방법이 있습니다. : echo, ajaxreturn
$1 첫 번째 유형 방법:
echo, 직접 인코딩하고 json 문자열을 출력해야 합니다
이때 상황은 두 가지인데 하나는 프론트 데스크로부터 받은 json 문자열을 반환하는 것과, 다른 하나는 백그라운드 배열에 새로 생성하여 프론트 데스크로 돌아가는 것입니다.
$1.1 백그라운드는 포그라운드 데이터를 받아 동일한 데이터를 반환합니다.
$map = $_POST['arr'];//从前台传递过来的$map $map = json_decode($map);//json对象 解码之后给php后台使用 ..... $map = json_encode($map);//对json数组进行编码生成json字符串 echo $map; //输出$map到前台
$1.2 백그라운드는 프로그램을 생성하고 프런트엔드로 돌아갑니다.
$mapN = json_encode($mapN);//在后台自行创建的数组,在传递给前台之前同样需要进行编码 echo $mapN;
$1.3 포그라운드 작업
res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组 console.log(res.name);
$2 두 번째 방법 :
ajaxreturn, 배열 전달 시 인코딩이 필요하지 않습니다. 기본적으로 json의 문자열 형식이 전달되지만 json 문자열을 배열로 변환하려면 프런트엔드에서 변환이 필요합니다.
이때는 두 가지 상황이 있는데, 하나는 프론트 데스크로부터 받은 json 문자열을 반환하는 것이고, 다른 하나는 백그라운드에서 새로운 배열을 생성하여 프론트 데스크로 반환하는 것입니다.
$2.1 프런트에서 프로그램을 받아 백그라운드에서 프런트로 직접 반납
$map = $_POST['arr']; $map = json_decode($map);//json对象 解码之后 $this->ajaxReturn($map,'json');
$mapN = array("name"=>"zhangwei"); $this->ajaxReturn($mapN,'json');// 此时不需要json_encode() ,前台通过mapN.name 或者mapN['name']输出
$2.3 포그라운드 작업
res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组 console.log(res.name);
$3 보충:
echo와 ajaxreturn의 차이점:
echo는 PHP 배열을 json 전송 형식(json 문자열 유형)으로 인코딩하지 않습니다. ajaxreturn은 인코딩을 위해 자동으로 json_encode 함수를 호출합니다.
둘 사이의 동일: json 값을 프런트 데스크에 전달한 후 변환하려면 eval("("+res+")")이 필요합니다. 사용하기 전에 json 배열로 저장하세요
$4 참고:
여기서 백그라운드는 프런트엔드 성공에 데이터를 반환할 수 있습니다. 함수(res)는 echo 또는 ajaxreturn을 통해 수행됩니다.
하지만 반환 후의 데이터 사용량은 다릅니다. 1. 문자열 유형: 백그라운드를 통해
echo
를 통해 문자열을 프론트 데스크의 res로 직접 출력할 수 있습니다.
2. 배열 유형: 프론트 데스크에서 전달된 json의 문자열 유형 배열 유형이든, 백그라운드에서 생성된 배열 유형이든 ajaxreturn을 통해 반환됩니다. 프론트 데스크에서는 다음을 통해
을 호출할 수 있습니다. 배열 이름 ['keyname']
또는array name.keyname
팁:
1. 프론트 데스크에서 json 문자를 뒤쪽으로 전달합니다. 문자열(그 자체는 배열이지만
을 통해 json 문자열로 변환됨) 전경) 백그라운드에서 디코딩하여 PHP에서 사용할 수 있는 json 배열로 변환하려면 json_decode가 필요합니다. 호출 메서드 배열 이름 -> 키
2. 백그라운드에서 생성된 배열을 json_encode를 통해 json 문자열을 사용하면 데이터가 프런트 데스크로 전송된 후 res = eval("("+res+")");을 통해 json 배열로 변환되어야 합니다. 프런트 데스크 호출 방법: 배열 이름 ['keyname']
또는 array name.keyname 관련 권장 사항: php 문자 인코딩 변환
PHP 인코딩 변환에서 잘못된 문자를 해결하는 방법위 내용은 json과 PHP 간의 인코딩 변환 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!