26

クライアント側で JSON 応答とフォーマットを取得することには利点がありますが、通常の送信と比較してフォーム送信に JSON を使用する利点はありますか?

4

5 に答える 5

19

POST データを扱うときに気になることが 1 つあります。それは無駄な繰り返しです。

たとえば、POST では次のようになります。

partners[]=Apple&partners[]=Microsoft&partners[]=Activision

JSON を送信するときのように、ここで多くの繰り返しがあることが実際にわかります。

{"partners":["Apple","Microsoft","Activision"]}

47 文字に対して 59 文字です。この小さなサンプルでは非常に小さいように見えますが、これらの節約はどんどん増えていく可能性があり、数バイトでもいくらかのデータを節約できます。もちろん、サーバー側でデータの解析が行われるため、違いが均等になりますが、低速の接続 (3G と EDGE を見てください) を処理するときに、これが役立つことがあることがわかりました。

于 2014-10-23T11:47:07.473 に答える
2

基本的なフォーム送信の明らかな利点は見当たりません。しかし、複雑な構造を処理する場合は、データを整理することの利点に気付くでしょう。

したがって、単純な連絡フォーム(名前、電子メール、メッセージ)がある場合は、通常のフォームに固執しますPOST。ただし、たとえば、完全なユーザーのCVを送信することを考えてみてください。サーバー側のスクリプトで大量の変数を処理するのは、非常に面倒です。

PHPでJSONを使用する例を次に示します

//Here are the submission data
{
    "personalInformation": {
        "name": "hey",
        "age": "20"
    },
    "education": {
        "entry1": {
            "type": "Collage",
            "year": "2012"
        },
        "entry2": {
            "type": "Highschool",
            "year": "2010"
        }
    }
}

$CV_Data = json_decode($_POST['json_form'], true);
$CV_Data['personalInformation']['name'];
$CV_Data['personalInformation']['age'];
//Or you can loop
foreach($CV_Data['education'] as $entry){
   $entry['type'];
   $entry['year'];
}

ご覧のとおり、ここでJSONを使用すると、データの操作がはるかに簡単になります。

于 2012-08-20T18:15:23.470 に答える
1

私は実際に同じ問題に取り組んでいます。私の使用例では、潜在的に複雑なツリーをサーバーにポストする必要があります。一部のフレームワークは、2 次元配列をフォーム属性としてデコードできます (Spring WebMVC は私が知っているものです)。それでも、これは、ネストされた配列を送信する特定のケースでのみ役立ちます。名前と値のペアの固有の性質により、1 レベル以上の深さのツリーを送信するのには適していません。過去に、URL エンコードされた JSON を属性値として送信するなどのハックを使用しました。

val0=%7B%22name%22%3A%22value%22%7D&val1=something&val2=something+else

ただし、このアプローチは、オブジェクトがより複雑になると、面倒になり、デバッグが難しくなります。さらに、多くのフレームワークは、JSON フォーム ポストをオブジェクトに自動的にマップするツールを提供しています (例: Jackson for Java)。

最終的には、送信するオブジェクトの複雑さに応じて選択します。オブジェクトが 1 レベルの深さに制限されている場合は、そのままの名前と値のペアを使用します。オブジェクトが複雑で、深くネストされたツリーを含む場合は、JSON を使用します。

于 2013-03-04T15:50:30.203 に答える