【发布时间】:2016-11-17 15:57:18
【问题描述】:
我正在尝试将表单提交给 php,但不知何故我没有将所有数据都传递给 php?
初始化帖子的jQuery是这样的:
var fieldsdata = $('form').serialize()
$.post( "index.php", fieldsdata, function(data){
console.log( data );
});
.. 我尝试发送到服务器的 fieldsdata 变量是这个(我在控制台中测试这个)
[
{
"name": "form_key",
"value": "FEYzybQEfJjTkzAI"
},
{
"name": "shipment_item_3",
"value": ""
},
{
"name": "shipment[items][3]_1",
"value": "21"
},
{
"name": "shipment[items][3]_2",
"value": "22"
},
{
"name": "shipment[items][3]_3",
"value": "31"
},
{
"name": "shipment[items][3]_4",
"value": "42"
},
{
"name": "warehouse-shipment[items][3]_1",
"value": "1"
},
{
"name": "warehouse-shipment[items][3]_2",
"value": "1"
},
{
"name": "warehouse-shipment[items][3]_3",
"value": "1"
},
{
"name": "warehouse-shipment[items][3]_4",
"value": "1"
},
{
"name": "lotnumber-shipment[items][3][1]_1",
"value": "4"
},
{
"name": "lotnumber-shipment[items][3][1]_2",
"value": "5"
},
{
"name": "lotnumber-shipment[items][3][1]_3",
"value": "5"
},
{
"name": "lotnumber-shipment[items][3][1]_4",
"value": "6"
},
{
"name": "shipment_item_4",
"value": ""
},
{
"name": "shipment[items][4]_1",
"value": "7"
},
{
"name": "warehouse-shipment[items][4]_1",
"value": "1"
},
{
"name": "lotnumber-shipment[items][4][1]_1",
"value": "7"
},
{
"name": "shipment[comment_text]",
"value": ""
}
]
当我执行这个调用时,我正在检查器中监视网络选项卡,我可以确认我发送到服务器的表单数据是正确的:
而且我在 index.php 文件中只有一行代码,只是为了调试这个信息:
var_dump($_POST);die('e');
这就是我得到的:
/var/www/html/inventory174/index.php:27:
array (size=6)
'form_key' => string 'FEYzybQEfJjTkzAI' (length=16)
'shipment_item_3' => string '' (length=0)
'shipment' =>
array (size=2)
'items' =>
array (size=2)
3 => string '42' (length=2)
4 => string '7' (length=1)
'comment_text' => string '' (length=0)
'warehouse-shipment' =>
array (size=1)
'items' =>
array (size=2)
3 => string '1' (length=1)
4 => string '1' (length=1)
'lotnumber-shipment' =>
array (size=1)
'items' =>
array (size=2)
3 =>
array (size=1)
...
4 =>
array (size=1)
...
'shipment_item_4' => string '' (length=0)
e
我看到例如这个变量shipment[items][3]_x 没有传递所有键,但只有两个.. 我想我正面临某种变量名称约定限制,但不知道是什么,如果有人可以重新审视这个很有帮助的数据!
我还测试了我的表单是否有效,如下所示:$('edit_form').checkValidity() 我得到了true 回来.. 所以我想没关系
UPDATE1:添加表单标记 -> https://jsfiddle.net/zfn98tha/1/ UPDATE2:$_REQUEST 的输出 -> https://jsfiddle.net/zfn98tha/2/
【问题讨论】:
-
向我们展示表单的标记。
-
你能检查一下你的php文件中的print_r($_REQUEST)吗
-
我添加了有问题的表单和 print_r 输出 .. thx
-
可以控制表单中的输入名称吗?我会将它们命名为不同的名称:
shipment[items][3][x]而不是shipment[items][3]_x。这样,字段名称将被格式化为数组,并且您将获得所有索引。 -
请按照@JayBlanchard 的说明添加标记
标签: php jquery ajax forms http-post