ホームページ >バックエンド開発 >PHPチュートリアル >jsonとPHP間のエンコーディング変換の問題
この記事は主に json と PHP の間のエンコーディング変換の問題を紹介します。これで、必要な友達に参考にしていただけます。データを渡すときに発生する可能性のあるデータ変換状況の処理 (主に配列):
☆ フロントエンド コード:
<br/>
<br/>
var arr = {"name":"张伟","age":19}; //此时生成的是json的数组
☆ バックエンド コード (渡すだけの場合) strings):
arr = json.stringify(arr); //此时将arr转换成 json的字符串类型
Question
phpとjsonから配列を渡す場合について、バックグラウンドからフロントにデータを渡すには2つの方法があります: echo、ajaxreturn
$1 最初のタイプメソッド:
この時点で、2つの状況があります。1つはフロントから受け取ったjson文字列を返す方法と、バックグラウンド配列に新しいjson文字列を作成してフロントデスクに返す方法です。
$.ajax({ type:"post", url:url, data:{arr:arr}, //将转换成字符串类型的json传递给php后台,换换成字符串类型后可以一次性传递多个数据 success:function(res){ console.log(res); } });$1.2 バックグラウンドはプログラムを作成し、フロントエンドに戻ります
map = $_POST['arr']; $map = json_decode($map);//json对象 解码之后PHP可以使用,但要用json的方法在后台使用$map->name echo $map->name; // 会输出到res中, 通过consolve.log(res) 可以直接输出$1.3 フォアグラウンド操作
$map = $_POST['arr'];//从前台传递过来的$map $map = json_decode($map);//json对象 解码之后给php后台使用 ..... $map = json_encode($map);//对json数组进行编码生成json字符串 echo $map; //输出$map到前台
$2 2番目の方法:
ajaxreturn、デフォルトでは、json の文字列形式が渡されますが、json 文字列を配列に変換するには eval が必要です。
このとき、フロントから受け取ったjson文字列を返す場合と、バックグラウンドで新しい配列を作成してフロントに返す場合の2つの状況があります。
$2.1 フロントからプログラムを受け取り、バックグラウンドから直接フロントに返却
$mapN = json_encode($mapN);//在后台自行创建的数组,在传递给前台之前同样需要进行编码 echo $mapN;
res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组 console.log(res.name);$2.3 フォアグラウンド動作
$map = $_POST['arr']; $map = json_decode($map);//json对象 解码之后 $this->ajaxReturn($map,'json');
$3 補足:
バックグラウンドからフロントエンドへのデータ転送に関する
echo と ajaxreturn の違い:
echo は、php 配列を json 転送形式 (json 文字列型) にエンコードしません
この 2 つの点は同じです:
フロントデスクに json 値を渡した後、変換するには eval ("("+res+")") する必要があります使用する前に json 配列に変換してください$4 注:
ここで、バックエンドはフロントエンドにデータを返すことができます。成功: function (res) through echo または ajaxreturn
しかし、戻った後のデータ使用法は異なります:
echo、フロントデスクの res に文字列を直接出力できます
2. 配列型: かどうかフロントデスクから渡されたjsonの文字列型配列型、またはバックグラウンドで生成された配列型で、ajaxreturnを通じて返されます。
を呼び出すことができます:
array name ['keyname']
array name.keyname String (それ自体は配列ですが、フォアグラウンドで stringify によって json 文字列に変換されます) は、バックグラウンドでデコードし、PHP で使用できる json 配列に変換するために json_decode が必要です。呼び出しメソッド 配列名 -> キー
2. バックグラウンドで作成された配列が json_encode を通じて json 文字列に変換される場合、データがフロントデスクに送信された後、 json 配列に変換される必要があります。
フロントデスク呼び出しメソッド:
または 配列名.keyname
関連する推奨事項: php文字エンコード変換
PHPのエンコード変換で文字化けを解決する方法
以上がjsonとPHP間のエンコーディング変換の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。