关于ASP代码的表单提交的疑惑:为何顺序不同,提交的内容会都丢掉?

feifeiwu 2009-03-24 11:34:35
加精
在表单中有如下代码:

<TD>
<input name="n_pl" type="hidden" id="n_pl" value="2" />
<input name="n_lan" type="hidden" id="n_lan" value="<%=lan%>" />
</TD>


<TD>
<textarea name="n_data" style="display:none" id="n_data"></textarea>
<IFRAME ID="eWebEditor1" src="/edit_er/ewebeditor.asp?id=n_data" frameborder="0" scrolling="no" width="550" height="350"></IFRAME>
</TD>

说明:
在文本框<textarea name="n_data"…做style="display:none"后,使用的一个IFRAME是网上提供的免费HTML编辑器。编辑完的内容由n_data提交。

现在的问题是:
如果按照现在的顺序,也就是将<input name="n_lan"…放在<textarea name="n_data"…之前,此时提交,则文本框n_data的内容实际上并没有提交到数据库中,其他内容都入库。

反之,如果将以上代码中<input name="n_lan"……放在<textarea name="n_data"……之后,此时提交,则<input name="n_lan"…的内容实际上并没有提交到数据库中,其他内容都入库。

在下琢磨到半夜还是搞不明白。
请问高手这是怎么回事,如何解决?多谢了!!!
...全文
1916 98 打赏 收藏 转发到动态 举报
写回复
用AI写文章
98 条回复
切换为时间正序
请发表友善的回复…
发表回复
PChelp 2010-12-22
  • 打赏
  • 举报
回复
表单没有设计好吧
linux921 2010-03-17
  • 打赏
  • 举报
回复
我也遇到过类似情况

有时候<input>,ID和name不能共存,也不清楚是为什么,保留name,去掉ID试试
feifeiwu 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 81 楼 xiaohuli1984 的回复:]
<form action="add_news_save.asp" method="post" enctype="multipart/form-data" name="myform" onSubmit="return checkform();">
提交表单最好是别用(enctype="multipart/form-data",最好用nctype="text/plain" ),很容易出错 如果是有文件上传的话最好是用iframe框架通过js给文本字段赋值
个人经验 本人从来不把获取文本信息和上传信息混合起来用 你这中错误是轻的了,这种方式很不稳定,在使用过程中出现错误的…
[/Quote]

用了enctype="text/plain之后根本啥都提交不上去。
阿弥陀佛 2009-04-05
  • 打赏
  • 举报
回复
谢谢,路过,学习中……
feifeiwu 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 paladinzhu 的回复:]
你是在2003服务器上面运行的吧?

在上传数据时,2003服务器上有限制的,一次最多上传200K,
你这个提交的还带着一张图片一起提交上去的吧?

例如图片有199K,那么其它的东东就只能有1K,所以可能是你其它的内容太多了。

再试试看,祝你解决问题。
[/Quote]

关于这个2003服务器上有限制的,一次最多上传200K,的问题,解决方案如下:
'rs("N_content") = request.form("Content")
For i = 1 To Request.Form("content").Count
sContent1 = sContent1 & Request.Form("content")(i)
Next
rs("N_content")=sContent1
feifeiwu 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 0041123 的回复:]
rs("n_lan")=n_lan
rs("n_data")=n_data
你把这2个字段类型全换成char型,试试吧,应该可以.
[/Quote]

这样也不行
feifeiwu 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 0041123 的回复:]
rs("n_lan")=n_lan
rs("n_data")=n_data
你把这2个字段类型全换成char型,试试吧,应该可以.
[/Quote]

这样也不行
cuixiping 2009-04-05
  • 打赏
  • 举报
回复
俺是吃了这个5xsoft的亏,才检查出来的,当时也在网上搜不到解决方法,自己摸索出来的。
楼主好运了。
feifeiwu 2009-04-05
  • 打赏
  • 举报
回复
同时谢谢斑竹的推荐!
feifeiwu 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 cuixiping 的回复:]
这个问题我也遇到过的。
与 upload_5xSoft 的版本有关,这个流传甚广的ASP无组件上传脚本,其某些版本就是有这个BUG,在某些神奇的巧合下,可能会丢失末尾的表单项的值。
所以,你最后一个upload.form可能取不到值。

解决方法:
1、使用最新的upload_5xSoft版本
2、在你的表单最后再加一个无意义的隐藏表单项,比如在 </form>之前再加一个 <input type='hidden' name='nothing' value='nothing'>

你试试,不行再…
[/Quote]

谢谢58楼,你的方法解决问题!马上给你加70分!本贴剩下的30分给一些热心提供参考的朋友。
同时请58楼cuixiping兄弟到下面这一贴跟帖,还有100分,我承诺都给你!
http://topic.csdn.net/u/20090329/21/ab28b14e-1825-4914-91d3-67b1bc819bf9.html

再次感谢58楼cuixiping兄弟 和其他各位热心的朋友!

总结:
主要的问题现在确实可以判断根源在upload_5xSoft组件,
它里面使用的是upfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)工作方式,
导致最后一个表单内容丢失。同时无法使用request方式获取表单值。

类似的问题见:
http://topic.csdn.net/u/20071211/15/4ea917b3-c0d2-429b-8b18-d538c4885b10.html
阿弥陀佛 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 feifeiwu 的帖子:]
在表单中有如下代码:

<TD>
<input name="n_pl" type="hidden" id="n_pl" value="2" />
<input name="n_lan" type="hidden" id="n_lan" value=" <%=lan%>" />
</TD>


<TD>
<textarea name="n_data" style="display:none" id="n_data"> </textarea>
<IFRAME ID="eWebEditor1" src="/edit_er/ewebeditor.asp?id=n_data" frameborder="0" scrolling="no" width="550" height="350"> </IFRAME>
</TD>

说明:…
[/Quote]


提供另一种解决思路:

既然你已经采用eWebEditor,
那就可以考虑不必使用upload_5xSoft组件。
这样会使编程页面更简单,
因为eWebEditor里面自带上传图片功能。
而且这样就可以使用Request 集合获取表单值,
结合for循环可以取得大于200KB的表单值,
而不至于和BinaryRead冲突。
feifeiwu 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 luckysnowtt 的回复:]
<input name="n_lan"……不管变什么位置,都是没有能提交数据,那就是这个字段是否取到值?
建议你提交到数据库前,先检查一下他是否取到值.
lan=request.form("n_lan")
再打印出来看看

response.write "n_lan的值:"&n_lan
没有问题再
rs("n_lan")=lan
rs("n_lan")括号内换成你数据据字段就OK.
[/Quote]

n_lan 和 n_data不管谁放在最后,response.write 打印的都是空值。
feifeiwu 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 xhlnb 的回复:]

<textarea 这里的值用这样来取看看request("") 不要用upload.form
[/Quote]

使用后出现以下错误提示:

Request 对象 错误 'ASP 0208 : 80004005'

不能使用一般 Request 集合

/news/main/add_news_save.asp,行 25

调用 BinaryRead 之后,不能使用一般 Request 集合。
dhlymdh 2009-04-04
  • 打赏
  • 举报
回复
啊``不会吧
xiaohuli1984 2009-04-02
  • 打赏
  • 举报
回复
<form action="add_news_save.asp" method="post" enctype="multipart/form-data" name="myform" onSubmit="return checkform();">
提交表单最好是别用(enctype="multipart/form-data",最好用nctype="text/plain" ),很容易出错 如果是有文件上传的话最好是用iframe框架通过js给文本字段赋值
个人经验 本人从来不把获取文本信息和上传信息混合起来用 你这中错误是轻的了,这种方式很不稳定,在使用过程中出现错误的概率很高。
xiaoqicsu 2009-04-01
  • 打赏
  • 举报
回复
路过,学习!!!!!!!!!!!!!!!!!!
zhaojiwei 2009-04-01
  • 打赏
  • 举报
回复
哪会这种事,你自己最好检查是否你改动时候改动了某一个名称
落日听风 2009-04-01
  • 打赏
  • 举报
回复
问下楼主,问题解决了吗?
把解决方法公布一下,大家学习学习
lovezx1028 2009-03-31
  • 打赏
  • 举报
回复
0222222222
pzy135565 2009-03-31
  • 打赏
  • 举报
回复
等待中
加载更多回复(72)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧