POST數組簡述

又沒有想過數組能否被post出去?

當然是可以的。比如網頁前端中造了個數組user[],裡面存放著許多用戶的id,要POST給服務器保存,這種事常見,代碼可能是這樣的:

...
var user = new Array();
...
$.ajax({
  url: "http://xxx/xxx.php", 
  data: user, 
  type: 'POST', 
  success: successCb,
  error: errorCb,
  async: false
});
...
於是乎數組user就被POST出去了。在傳送過程中它是啥樣的呢?我們抓包看看:


它就是這樣傳輸的,如果我們看一下原始的數據,它是形如這樣的:

user[]=11111&user[]=22222&...

注意:

1、數組在傳輸過程中沒有下標,也就是說下標由接收方自己計算得出;

2、數組元素之間用&符號連接,其實就是URL POST的那種“習慣形式”;

3、數組元素的值沒有用""括起來,也就是說上圖中user[] = "XXXX"的引號是抓包器分析加上去的,好讓開人員識讀。

這種數組的POST也常用語網頁中一堆相同name或者id的元素,比如一堆checkbox還都叫user,有的被選中了,有的沒有,然後一把POST出去,是可以的,但是元素的名字後面得加上个[],如下:

<input type="checkbox" name="user[]" value="" />
<input type="checkbox" name="user[]" value="" />
<input type="checkbox" name="user[]" value="" />
<input type="checkbox" name="user[]" value="" />
瀏覽器就是把它變成haha數組傳輸,另一頭也得用數組方式解析。

如果元素名不加[]呢?比如这样:

<input type="checkbox" name="user<span style="font-family: Arial, Helvetica, sans-serif;">" value="" /></span>
<input type="checkbox" name="user" value="" />
<input type="checkbox" name="user" value="" />
<input type="checkbox" name="user" value="" />
那另一頭將只能獲取最後一個checkbox的值(相當於是最後一個把前面的都覆蓋了)。

那該怎麼解析呢?

以萬人鄙視的PHP為例,可以這麼干:

$users = $_POST['user'];
if(is_array($users))
{
    foreach($users as $users_member)
    {
        echo $users_member;
    }
}

$users_member就是每個元素的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值