作者catjimmy (cat)
看板PHP
标题Re: [请益] POST接不到值.......(泣)
时间Wed Mar 16 17:03:30 2011
还是解决不了,作了以下测试,希望有高手指点Orz
这是我的样板html部分
http://pastie.org/1677786
PHP部分
http://pastie.org/1677795
PHP中所使用的class
http://pastie.org/1677801
在html的部分,我使用section逐笔抓取从资料库来的资料
在回圈中用if else判断显示甚麽资料
并在第47行中使用Smarty的html_checkboxes来产生一个核选方块
表单Submit後将值传给自己本身的php处理
PHP的部分可以看到在第24行我将所有POST抓到的值列印出来
发现我命名edm_machine_tool_amount理应是一个阵列的checkbox
传回来却变成一个字串 "Array"
因为想不通,因此我把原先使用html_checkboxes的部分改写成一般HTML写法如下
<input type="checkbox" name="edm_machine_tool_amount[]" value=""....(略)
但这样也是传回一样的结果,一个叫做"Array"的字串...
後来我将name="edm_machine_tool_amount[]"的"[]"拿掉变成每个都一样名字
我发现他就可以抓到值了,输出edm_machine_tool_amount=我所选的id
我真的想不透为什麽,我想问题应该是出在Smarty上面
但我真的找不出来,请高手指点迷津了.....谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.68.104
1F:推 Jerr:检查一下 checkbox 的值 $output_list[sec1].electrode_no 03/16 17:11
2F:→ catjimmy:检查过了,都能output在画面上Orz 03/16 17:12
3F:→ Jerr:应该说 看实际上 render 出来的 html, checkbox value="??" 03/16 17:12
我有试过
name=edm_machine_tool_amount_{$output_list[sec1].electrode_no}
这样是OK的,我勾选的传过去会印出edm_machine_tool_amout_值 ="值"
想不透orz
※ 编辑: catjimmy 来自: 220.133.68.104 (03/16 17:16)
4F:→ Jerr:觉得应该是 {html_checkboxes} 有内鬼 03/16 17:13
5F:→ catjimmy:但直接用html语法也是不行,像刚刚那段就是用html写的泪 03/16 17:17
6F:推 kuAIpAI:我也是用SMARTY架构的~ 你把印出的资讯完全贴出来一下~ 03/16 20:03
7F:→ kuAIpAI:var_dump($_POST) 所印出得资讯~ 03/16 20:03
这是在htm使用
<input type ="checkbox" name='edm_machine_tool_amount[]' value=..(略)
印出
array
'edm_machine_tool_amount' => string 'Array' (length=5)
'Submit' => string '输出' (length=6)
'postback' => string 'true' (length=4)
使用
<input type ="checkbox" name='edm_machine_tool_amount' value=..(略)
印出
array
'edm_machine_tool_amount' => string '11' (length=2)
'Submit' => string '输出' (length=6)
'postback' => string 'true' (length=4)
使用smarty
{html_checkboxes name='edm_machine_tool_amount' values=...(略)
印出
array
'edm_machine_tool_amount' => string 'Array' (length=5)
'Submit' => string '输出' (length=6)
'postback' => string 'true' (length=4)
HELP~~~
※ 编辑: catjimmy 来自: 122.147.18.185 (03/16 21:19)
8F:→ KC73:试试看 var_dump($_POST['edm_machine_tool_amount']) 03/17 03:58
9F:→ KC73:array 代表它是一个 array,不是它的内容是 'array'。 03/17 03:58
10F:→ KC73:你用 name='foo[]' 时,值会放在 $_POST['foo'] 这个 array 03/17 03:59
11F:→ arrack:可是他用的是VAR_DUMP 造理说应该会探索进去? 03/17 12:12
12F:→ chrisQQ:我也觉得 var_dump 应该也会列出 array 的内容 03/17 13:14
回KC大,我照您的方法去印,还是印出下面这个.....
string 'Array' (length=5)
救命~ 请救救我太太
※ 编辑: catjimmy 来自: 220.133.68.104 (03/17 16:30)
13F:→ Jerr:这一定是form submit之前input的value是String(5) "Array" 03/17 16:40
14F:→ Jerr:用firebug or chrome的检查元素看实际的画面 不要铁齿 03/17 16:42
15F:→ Jerr:smarty {html_checkboxes} 输出的input type="checkbox"有鬼 03/17 16:43
回Jerr大大
我也曾放弃使用smarty来输出..就直接把那行改成一般的html产生方式如下
<input type ="checkbox" name='edm_machine_tool_amount[]' value=..(略)
但是印出变数跟使用smarty情况一样,变成一个字串而不是array
我刚刚使用firebug去看页面,确定在输出前html页面应该是没有错的
因为他确实显示name="edm_machine_tool_amount[]"
请参考图
http://imm.io/4oYZ
但是传给自己用POST去接怎麽会变成这样咧!!!!
btw..我还写了一个最基本的勾选传值的php是可以用的
所以我的勾勾应该是没坏吧.....救命!!
※ 编辑: catjimmy 来自: 220.133.68.104 (03/17 17:22)
16F:推 Jerr:Orz.. 那var_dump($HTTP_RAW_POST_DATA); 出来看看 03/17 17:57
回Jerr大 印出来是.......null
※ 编辑: catjimmy 来自: 122.147.18.185 (03/17 22:09)
最後终於解决了,感谢协助我解决问题的mesak大大
最後发现问题是在我php程式一开始import的main.php中
有一个我用来处理编码的函式会将所有$_POST的值先使用array_map()来处理
而这只能处理一维阵列而已,因此改写这支函式就好了
非常感谢帮助我的mesak大大!
※ 编辑: catjimmy 来自: 111.241.249.170 (03/20 14:39)
※ 编辑: catjimmy 来自: 111.241.249.170 (03/20 14:40)
17F:→ mesak:不客气,可以拿出来给大家鞭一下 03/20 23:01