1

.post クエリを実行するときの json_encode の目的を誰でも説明できますか。

これは、他の人のコーディングでよく見られるものです。

.post php スクリプト

    ...
    ...

    echo json_encode($a);

つまり、.post スクリプトから戻り、.post 経由で配列を返したい場合です。私は次のことをする必要はありませんか?

.post php スクリプト

    ...
    ...
    $a = array("foo", "bar", "hallo", "world");
    $string=implode(',',$a) in my php script        

    return $string;

JavaScript

    $.post('$url',function(data){
        data_arr=data.split(',');
        //After which just get the values in the array
        alert(data_arr[0]); //ALERTS 'foo'
        alert(data_arr[1]); //ALERTS 'bar'
    });

誰かが私のためにこれを片付けて、この目的でjsonを使用するための光を見せてくれるなら、それは素晴らしいことです.

おそらく、JSON に関する私の知識不足も原因です。

この場合にJSONエンコードを使用する方が良い理由と、文字列をエコーアウトして後で分割するのではなく、.postリクエストを介してどのように使用するかについて、誰かが私にアドバイスできると非常にありがたいです.

ありがとう。

4

2 に答える 2

2

を使用json_encodeすると、データが常に有効になります。

制御できる単純なデータの場合は実際には重要ではありませんが、いつか値の1つにコンマが含まれる場合を想像してみてください。JSONでエンコードされた文字列を使用すると、任意のセパレータトークンについて心配する必要はありません。

また、JSONを使用すると、車輪の再発明をしなくても、オブジェクト/配列を簡単にエンコードできます。

于 2013-02-08T02:59:22.420 に答える
1

まず第一に、私の意見と実践では、JSON構文はJavascriptオブジェクトにかなり似ており、後で送信/要求および解析する必要があるより複雑なデータ型を処理する場合に最適です。

key => value例:POSTリクエストを実行していて、サーバー側で検証するすべてのフォームフィールドを(PHPを使用して)シリアル化する場合は、のようなペアを使用する必要がありますtextbox_name => value。数値インデックスで値を選択するよりも、そのようにする方が論理的です(フォームのレイアウトが変更された場合はどうなりますか?)

カンマを使用したコード例:

<?php
$array = array('Tom', 'Hanks', 'Football');
$string = join(',',$array);
echo $string; //it's obvious - the output is Tom,Hanks,Football
?>

文字列を受け取るJavaScript

$.post(url,{},function(data){
   var values = data.split(',')
   $("#name").text(values[0]);
   $("#surname").text(values[1]);
   $("#interests").text(values[2]);
});

それで、それは理にかなっていますか?しかし、代わりにこれを行う方が理にかなっているのではないでしょうか。

<?php
header('Content-type: application/json');
$array = array('name' => 'Tom', 'surname' => 'Hanks', 'interests' => 'Football');
echo json_encode($array);
?>

そしてjavascript:

$.post(url,{},function(data){
   for(index in data) {
      $("#"+index).text(data[index]);
   }
   //or
   $("#name").text(data.name);
   $("#surname").text(data.surname);
   $("#interests").text(data.interests);
});

同じことが、Javascriptを使用した応答データの解析にも当てはまります。オブジェクトを持つことは、CSV文字列を持つことよりも論理的です。

明らかにユースケースによって異なりますが、一般にJSONは、オブジェクトや配列に変換して戻したり、ループしたり、任意の方法で操作したりできる、文字列化されたオブジェクト/配列の論理構造を提供します。

また、JSONが標準になりました。誰もがそれを使用しています。つまり、理由がないわけではありません。言い換えれば、JSONデータの方が理にかなっています。

于 2013-02-08T03:24:27.300 に答える