【发布时间】:2013-08-29 16:54:31
【问题描述】:
我有一个显示表格的页面,并且在每个表格行中嵌入一个表单,该表单从下拉菜单中提交一些数据。我正在使用 AJAX 生成页面。以下是我在 php 页面中回显的内容。
echo "<table id=\"comp\">";
echo "<tr>
<th> CID </th>
<th> USERNAME </th>
<th> NAME </th>
<th> DESCRIPTION </th>
<th> ADDRESS </th>
<th> PHONE </th>
<th> DATE </th>
<th>Choose JE</th>
<th></th>
</tr>";
for($i=0;$i<$count;$i++)
{
$c = mysql_result($result, $i, 'cid');
echo "<form name=\"$i\" action=\"je_select.php\" method=\"post\">
<tr id=\"$i\">";
echo "<td>".$c."</td>";
echo "<td>".mysql_result($result, $i, 'uname')."</td>";
echo "<td>".mysql_result($result, $i, 'name')."</td>";
echo "<td>".mysql_result($result, $i, 'desc')."</td>";
echo "<td>".mysql_result($result, $i, 'address')."</td>";
echo "<td>".mysql_result($result, $i, 'phone')."</td>";
echo "<td>".mysql_result($result, $i, 'date')."</td>";
echo "<td>$dropdown</td>";
echo "<td><input type=\"hidden\" name=\"cid\" value=\"$c\"/><input type=\"submit\" value=\"Forward\"/></td>";
echo "</tr></form>";
}
echo "</table>";
现在的问题是表单显示正常,但单击提交按钮时表单没有提交。它根本什么都不做。虽然我的另一个项目中的类似代码工作得很好。
请帮我解决这个问题。我被困住了,我需要尽快完成这个项目。
编辑
我尝试为此打开源代码。我看到的是表单标签在它打开的地方关闭:
<form name=\"$i\" action=\"je_select.php\" method=\"post\"></form>
为什么会这样??我也看到了帖子:Form Issue (closing itself early in table)
我在“tr”标签之前打开了表单标签,但它仍然不起作用。
更多
我注意到的另一件事是,在 AJAX 页面的源代码中,由于无法解释的原因,该表还有一个 tbody 标记。虽然 tbody 标签也出现在我的一个较旧的项目中,但在那里也有类似的东西。请帮帮我。
AJAX 功能
要点击的链接:
<div id="choices">
<ul id="clist">
<a href="#" onclick="ajax(1);"><li>Pending Complaints</li></a>
<a href="#" onclick="ajax(2);" ><li>Handled Complaints</li></a>
<a href="logout.php" ><li>Logout</li></a>
<div class="clear"></div>
</ul>
</div>
函数ajax:
function ajax(val) {
var xmlhttp;
if (active != val) {
active = val;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xhr) {
xhr.abort();
}
xhr = xmlhttp;
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("content").innerHTML=xmlhttp.responseText;
document.getElementById("banner").innerHTML=arr[val - 1];
}
}
xmlhttp.open("GET","dispcae.php?&s="+val , true);
xmlhttp.send();
}
}
【问题讨论】:
-
您是否尝试过将表单从 Ajax 中剥离出来并自行测试?一些基本的问题解决尝试不会在这里错过......
-
@FDL:你试过了,它在那里工作。事实上,我实际上在做的是当用户打开页面时,默认情况下他会看到这个表。但如果他选择其他菜单项,则使用 ajax 打开这些菜单项,包括此表。
-
您正在回显多个表单,因为它包含在循环中
-
@shadow:是的,但都有不同的名称,正如我所说,类似的事情适用于我的另一个项目,也适用于这个项目的非 ajax 生成页面。
-
您不应该以数字开头的表单名称,这不是一个好习惯
标签: php javascript ajax forms html-table