【问题标题】:Form is removed from AJAX response从 AJAX 响应中删除表单
【发布时间】:2010-11-04 04:01:04
【问题描述】:

我正在尝试使用 ajax/jquery 添加一个表格行,其中包含一个表单元素。如果我在没有 ajax 的情况下设置它,一切都会正常工作,但不知何故,<form> 标记内的所有内容都完全丢失了。

我不确定我在哪里丢失了表单(jquery 的 .html() 实际上与 innerHTML 相同,对吗?如果是这种情况,我怀疑这就是我丢失它的地方)。

不管怎样,这里有一些代码:

var worow = document.getElementById('worow_' + row);
var wotable = document.getElementById('tbl_workorders');

// add a new row to the table underneath our existing row.
var newrow = wotable.insertRow(worow.rowIndex+1);
var x = newrow.insertCell(0);

// set up the row a little bit
x.colSpan = 13;
x.style.padding = '10px';
x.style.backgroundColor = '#ccc';
x.align = "center";

x.innerHTML = '<img src="/images/loading.gif" />';

// a little ajax cuz we're cool that way
$.post("getwotrans.php", 
{
    workorder: row
}, 
function(response)
{

    // set the value of the row = response object from the AJAX
    $(x).html(response);
});

在 getwotrans.php 中:(释义)

<table>
<thead><tr><td>blahblah</td></tr></thead>
<tbody><form><tr><td><input></td></tr></form></tbody>
</table>

所以发生的情况是我将运行 javascript 函数来添加行,并且行添加正常并且我看到表头,但是 tbody 内的“表单”不存在。

【问题讨论】:

  • 这里有一些读物。 w3.org/TR/html401/struct/tables.html
  • 哦,拜托,该表已被释义,可以快速描述我正在尝试做的事情。它的实际结构并不重要。不过谢谢你的冷嘲热讽。

标签: php jquery ajax forms


【解决方案1】:

我遇到了一些类似的问题。我使用隐藏表单和 javascript 将单击的行的值复制到隐藏表单元素,然后通过 javascript 提交表单。也许这是一个想法。

【讨论】:

  • 这是我采用的解决方案,但我不认为它是一种解决方案,而是一种解决方法。
【解决方案2】:

表单不能是 tbody 的子元素

【讨论】:

  • 我知道这在技术上是不正确的。但它可以在 FF、Chrome 和 IE 中运行,直到我尝试用一​​点 ajax 把它放在那里。你是说 javascript 不会让我在 tbody 中放入表单?
  • jquery 需要一个有效的 dom 才能工作。它应该在 w3c 上验证,如果不期望跨浏览器的不一致。为什么不用表格包裹表格?
  • 跨浏览器并没有不一致。它始终适用于我尝试过的所有浏览器,直到我尝试通过 ajax 使用它。你是说如果 AJAX 响应没有验证,jquery 会忽略它吗?
  • 同意。你说“它不正确”,答案是“当然不是,你做错了”。它在一种情况下有效但在其他情况下无效这一事实是无关紧要的。
  • 我敢打赌,如果您没有无效标记,ajax 响应将有效。这怎么不回答问题?你甚至尝试过吗?我想不会,否则您将不再那么笨拙并接受有效的标记有助于 jquery 正确执行。
【解决方案3】:

将表格放在表格之外会发生什么?

<form><table>
<thead><tr><td>blahblah</td></tr></thead>
<tbody><tr><td><input></td></tr></tbody>
</table></form>

只是好奇这是否能解决问题?奇怪的是,如果没有同样奇怪的东西来解决它,就会发生这种情况!

【讨论】:

  • 我确实可以把它放在桌子外面,但这并不是我真正想要的功能。这里的目标是内联行编辑,因此只需在每一行周围放置一个单独的表单(而不是使用隐藏字段或其他一些方法来确定我们正在编辑哪一行)。
猜你喜欢
  • 2021-11-11
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
相关资源
最近更新 更多