如何将表单信息从动态填充的div #printClass发送到另一个div #dbmsg?

时间:2012-01-15 20:46:23

标签: php jquery ajax forms html

我是一个非常新的php mysql ajax jquery编程,并且在将div中的addlabform的formdata加载到mysql数据库时遇到问题,因此如果我的代码是longwinded请原谅。我有一个php文件teacher.php,它有一个div #printClass,它附加了一个来自getclass.php的复选框值的形式。我想取复选框值并将它们传递给一个php文件addlab.php,它将在另一个div #dbmsg中加载一条消息。我尝试过使用许多不同的方法,并尝试使用onclick并提交,但我无法在第一个生成的div #printClass中获取表单的值。这是我的HTML:

<div id="dbmsg"></div>This is 
<div id="printClass">Labid: 100Course: 11
<br>
<form name="addlabform">
<input name="classid" value="11" type="hidden">
<input onclick="submitit()" value="SubmitIt" type="submit">
<input onclick="additnow()" value="Add Labs" type="button">
<table border="1">
<tbody>
<tr>
<th>Lastname</th>
<th>Firstname</th>
<th>Taken</th>
<th>Date</th>
</tr>
<tr> 
<td>lastname1</td>
<td>firstname1</td>
<td align="center">
<input name="labdone" value="2191" id="2191" type="checkbox">
</td>
<td>
<i>Not Done</i>
</td>
</tr>
<tr> 
<td>lastname2</td>
<td>firstname2</td>
<td align="center">
<input name="labdone" value="2042" id="2042" type="checkbox">
</td>
<td>
<i>Not Done</i>
</td>
</tr>
</table>
<script src="jquery-1.7.1.min.js" type="text/javascript"></script>
<script>$("#printClass").ready(additnow())</script>
<script>$("#printClass").ready(submitit())</script>
<script>

    $(document).ready(function() {
    $("#addlabform").submit(function () {
    $.post("addlab.php", $("#addlabform").serialize(), function (data, textStatus) {
    $("#dbmsg").append(data);
    });
    return false;
    });
    });
</script>
</div>

我有3个函数get_check_values(),addit()和submitit()。 get_check_values()旨在获取复选框值的值,这不起作用错误控制台说document.printClass是未定义的。 addit()用于将信息加载到div #dbmsg中,但是我无法从#printClass获取值,因此在get_check_values工作之前它会被卡住。 submitit()使用$ _REQUEST中的选中值重新加载原始php文件。我更喜欢使用submitit(),因为它不需要将所有输入值添加到addit()xmlhttp.open行。以下是功能:

<script type="text/javascript">
function get_check_values()
{
var c_value = "";
for (var i=0; i < document.printClass.addlabform.labdone.length; i++)
   {
   if (document.printClass.addlabform.labdone[i].checked) {
    c_value = c_value + document.printClass.addlabform.labdone[i].value;
    alert(c_value);
return false;

  }
}
}

function submitit() {
$(document).ready(function() {
$("#addlabform").submit(function () {
    $.post("addlab.php", $("#addlabform").serialize(), function (data, textStatus) {
        $("#dbmsg").append(data);
});
return false;
});
});
}    

function additnow() {
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("dbmsg").innerHTML=xmlhttp.responseText;
}
}
formvals = "tid=$tid";
var classid=encodeURIComponent(document.getElementById("printClass").value);
xmlhttp.open("GET","addlab.php?+tid=$tid&classid="+classid+formvals,true);
xmlhttp.send();
}

任何帮助都会非常感激,因为我已经为此工作了好几天。

1 个答案:

答案 0 :(得分:0)

我建议只使用普通表单提交:                                              

然后你的问题变成了纯粹的PHP问题。

如果有一些原因重新加载整个页面并不好,你可以使用iframe来确保只重新加载表单(但它仍然是整个表单):

<iframe src="addlab.php"></iframe>

请务必检查PHP中的$_POST['submitbutton']以检查点击了哪个提交按钮。