正常表单提交与JSON

Sta*_*007 22 post json

我看到在客户端获取JSON响应和格式化的优势,但与正常提交相比,使用JSON表单提交是否有任何优势?

小智 14

在处理POST数据时,有一件事是无用的重复:

例如,在POST中我们有:

partners[]=Apple&partners[]=Microsoft&partners[]=Activision
Run Code Online (Sandbox Code Playgroud)

我们实际上可以看到,这里有很多重复,就像我们发送JSON时一样:

{"partners":["Apple","Microsoft","Activision"]}
Run Code Online (Sandbox Code Playgroud)

59个字符与47个.在这个小样本中它看起来微乎其微,但这些节省可能会上升,甚至几个字节也可以节省一些数据.当然,在服务器端有解析数据,这可以解决差异,但我仍然看到这有时有助于处理较慢的连接(看着你,3G和EDGE).


J. *_*rca 7

我没有看到任何文件提交的提及,所以我想我会插话.FormData似乎是通过AJAX向服务器提交文件的标准方式.我没有遇到任何使用JSON的解决方案,但可能有一种方法来序列化/反序列化文件......

  • 好吧,你可以[将文件编码为Base64](http://www.nickdesteffen.com/blog/file-uploading-over-ajax-using-html5)并将它们作为字符串发送.它会像字符串一样大而不是二进制,真实,但有时你需要东西DONE :) (2认同)

off*_*ker 5

它可能取决于您的服务器端应用程序.您通常使用POST将数据发布到服务器,因此如何格式化下划线数据取决于您希望服务器如何处理它.POST提供了某种形式的key-> value协议,而在JSON中你可以提供更多.你也可以通过将它放在url中来使用GET传输json.

您必须将json视为数据写入的方式,而使用POST进行正常提交应该只为您提供传输数据的方式(当然,您可以滥用它的键 - >值功能来订购数据).

在HTTP之上存在协议,可以帮助您定义Web应用程序的接口.一个很好的例子是RESTfull http://en.wikipedia.org/wiki/Representational_state_transfer

特别是对于提交表单,我没有看到任何优点,POST是首先为此设计的.在某些情况下,您不仅要传输来自表单的数据,还要传输一些元数据,在这种情况下,json可能会通过以某种json格式编码表单数据(带元数据)来帮助您,但最后您仍然会滥用POST进行传输这个json数据.

希望我回答你的问题.


Adi*_*Adi 2

我没有看到基本表单提交有任何明显的优势。但当涉及到处理复杂的结构时,您将开始意识到组织数据的优势。

因此,如果您有简单的联系表单(姓名、电子邮件、消息),请坚持使用普通表单POST。但是,例如,考虑提交完整的用户简历,处理服务器端脚本中的大量变量非常烦人。

以下是在 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'];
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在这里使用 JSON 可以让您更轻松地处理数据。