firefox 表单无法提交ajax里的内容

idcbe.com

今天在修改一个内容表单,其中一个输入文本需使用ajax调用,并提交到数据库。

起初在firefox上测试,提交表单后,页面接收到ajax输入文本的值竟然为空,不能获取表单发送过来的内容。尝试过寻找:表单的原因(id和name的值)、js代码的原因,都不是!

后来在ie上试,居然可以成功提交!?

在网上找了很久,才找到一个针对性而有效的答案。这当中的原因其实是因为<form>和</form>嵌套的位置不够清晰,firefox无法识别。

以下是高手解答该问题的内容:

在以前的教材和实际应用里,应该很常见这种类型的嵌套:

<table>
  <form>
  <tr><td></td>
  </tr>
  </form>
</table>

目的无非是不想让form的margin和padding撑出不应有的空白,而这样做一直以来也都是有效的,在IE中无论是动态create出的表单项还是原有的内容都能被正确地传递,虽然这样是不符合DOM规范的。

在Firefox中,上面的嵌套也能正确地传递事先定义的表单参数,但是如果使用DOM创建新的表单项,新的Node无法与未按标准嵌套的form建立关联,所以post数据的时候它是不会被传递的。

需要的改动仅仅是让结构更清晰:
<form>
  <table>
  <tr><td></td></tr>
  </table>
</form>
现在我们只需要把form的margin和padding设为0,无需杂乱无可辨认的可恶嵌套。



[本日志由 edwin 于 2011-08-07 02:58 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: firefox 表单 ajax 提交
评论: 2 | 引用: 0 | 查看次数: 7924
回复回复tan[2016-01-25 10:04 AM | del]
谢谢,总算找到原因了.
回复回复Johnny[2011-10-24 05:01 PM | del]
[handclap]
可惜看到的太晚,不然可以省去很多時間~
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 50 字 | UBB代码 关闭 | [img]标签 关闭
idcbe.com