由ajax生成的PHP表单不起作用

时间:2013-08-29 07:05:22

标签: php javascript ajax forms html-table

我有一个显示表格的页面,在每个表格行中都要嵌入一个表格,从下拉菜单中提交一些数据。我正在使用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(); 
    }
}

2 个答案:

答案 0 :(得分:1)

Ajax响应不是valid HTML。表格不能包含在表格/ tr / td / th中。

尝试重构HTML,并使用Form环绕表格。

查看类似的Q&A

答案 1 :(得分:0)

我的猜测数据来自你的数据库有引号(单引号或双引号)在浏览器中断开渲染而你的内部实际上没有关闭,因为表单内没有提交按钮它不会做任何事情。

将虚拟数据放在数据库中,不带任何引号,然后检查