我在网页上有两个表单。
第一个不是实际的表单,因为这是一个基于.NET的站点。所以我有标准输入字段,以及asp:Button PostBackURL =“http:/ www ...”。其中一个字段是“电子邮件”。这很好。
然后我有一个带有另一个表单的XSLT文件,并使用Javascript(通过this.form.action,.method等)发布该表单。除此之外,它与上面的表格具有相同的字段。
问题是,当有人提交第二个表单时,PostBackURL上的脚本会返回错误,因为“email”字段显示为空。因此,表单似乎是从顶层表单而不是当前表单提交“email”字段。
我想可能提交了错误的表单,但是如果我从顶部表单中删除“email”字段,然后提交底部表单,则可以正常工作。
有关如何解决此问题的任何想法?感谢。
答案 0 :(得分:1)
如果没有看到页面的结构,可能会关闭(如果有的话,我道歉):
通常说,您通过Javascript(提交)控制的FORM应该在“主”asp.net服务器端表单之外。
结构如此:
<html>
<body>
<form id="the_asp_net_server_side_form" runat="server">
....asp.net controls, content, etc.....
....this section is the server-side asp.net form.....
</form>
<form id="standard_html_form1" action="blah">
....standard html <input> fields
....do whatever you want with javascript
....if you need to use "old school/legacy" asp style <%= %> code, do so
</form>
<form id="standard_html_form2" action="blah">
....standard html <input> fields
....do whatever you want with javascript
....if you need to use "old school/legacy" asp style <%= %> code, do so
</form>
</body>
</html>
这当然假设您需要在ASP.net应用程序之外发布数据(到某些外部URL)....
答案 1 :(得分:0)
该电子邮件字段是否已停用?如果是,某些浏览器将不会将数据发送到服务器。你可以做什么,如果是,是提交,启用该电子邮件字段。
答案 2 :(得分:0)
作为快速修复黑客,您可以将隐藏的电子邮件文本框编码为第二个/底部表单,并将其文本设置为空字符串""
或者可能是虚拟电子邮件。
它没有解决问题,但它应该可以解决问题。
答案 3 :(得分:0)
我会通过查看源来检查HTML,但可能的罪魁祸首是你不能在HTML中使用嵌套表单。如果您在HTML中嵌套表单,则会忽略内部表单并提交外部表单。
<form id="outer" onsubmit="alert('outer');return false;">
<form id="inner" onsubmit="alert('inner');return false;">
<input type="submit" value="Go" />
</form>
</form>
您可以在此处演示此行为:http://jsfiddle.net/eRZQD/。
鉴于此,您可能正在尝试提交内部表单,但实际上正在提交外部表单,其中包括导致您出错的空白电子邮件字段。您肯定会想要删除嵌套或重写HTML,以便内部提交按钮与外部提交按钮略有不同。