一个隐藏输入vs 1000个隐藏输入?

时间:2017-12-08 20:56:30

标签: javascript php jquery html ajax

我有大约1000个隐藏的输入要发送到laravel。我想我有2个选项来发送这些输入。

选项1:

我制作了1000个隐藏的输入并将它们发送到laravel。

<input type="hidden" name="id[1]" value="some stuff">
<input type="hidden" name="id[1]" value="some stuff">
..
<input type="hidden" name="id[100]" value="some stuff">

选项2:

我只将1个隐藏输入作为包含所有其他隐藏输入的JSON对象。

<input type="hidden name="value" value="A_JSON_OBJECT">

顺便说一句,我可以用Ajax发送表单。 我的问题是哪一个可以更快?

2 个答案:

答案 0 :(得分:1)

我的意思是你可以在所有字段的名称中使用数组符号Open H2O Flow in your web browser: x.x.x.x:54321 ,这样你就可以在服务器端收到一个数组,例如:

[]

然后使用ajax请求将数据发送到服务器端脚本,如:

//Same name for all the fields
<input type="hidden" name="id[]" value="some stuff">

$.post('file.php', $('input[name="id[]"]').serialize(), function(response){ //Server response }); 中,您将file.php中的数据作为数组接收。

答案 1 :(得分:0)

If you're creating 1000 HTML elements, sure browsers will handle it, but it can be surprisingly heavyweight.

The POST data would also be verbosely translated to:

id%5B%5D=Some+stuff&id%5B%5D=Some+stuff&id%5B%5D=Some+stuff&id%5B%5D=Some+stuff...

Which is a repetition of &id%5B%5D= for every element. That's 10K of separators for 1000 items, probably 9K bigger than it needs to be (or ~7K bigger than if using a JSON-encoded array in a single field value).