JQUERY提交表格和显示结果 - 页面上的多个表格

时间:2014-07-27 21:34:31

标签: php jquery forms

我是Jquery的新手,并试图在不久前重新创建混乱的东西,具有类似的功能。

我在此处粘贴了我的代码:http://pastebin.com/SYM45WPw

我有一个基于上一页表格结果创建的表格(这一切都正常),第一列中有学生姓名,之后的每一列都是测试要求的结果,只需通过/失败下拉,并为每个人和每个要求我想要继续并选择结果,并将结果提交到背景中的DB,然后删除选择选项并显示结果。

目前在post_result.php我有这个,只是文字我得到一个结果:

if($_POST['studentID'] != ""){
echo "Success";
}

非常感谢所有帮助,

编辑:(取自pastebin链接)

<?php
ini_set('error_reporting', E_ALL);
$student_name = $_POST['student_name'];
$class = $_POST['class'];
$month = $_POST['month'];
?>
<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

    $("select#result").change(function() {

    var studentID = $(this).find("input[name='student_name']").val();

        var result = $(this).serialize();

        $.post('post_result.php', result, function(data) {

                // We not pop the output inside the #output DIV.
                $("#output-" + studentID).html(data);

        });
$("#"+studentID+"-formarea").hide();
    return false;
});

});
</script>
    </head>
    <body>

<?php


    require 'db_connect.php';

    $header=1;
    $query = mysql_query("SELECT  * FROM  requirements WHERE   `class` = '$class' && month = $month ") or die("Error:". mysql_errno());

?>
<table class="tg" border="1">
  <tr>
      <th class="tg-031e">Student Name</th>
    <?php  while ($row = mysql_fetch_array($query)) {
    echo '<th class="tg-031e">'.$row['requirement'].'</th>';
        $header++;
    }
        ?>
  </tr>
  <?php 
  for ($i = 0; $i < count($student_name); $i++) {
    echo '<tr>';
    echo ' <td class="tg-031e">'.$student_name[$i].'</td>';
        for ($count = 1; $count < $header; $count++) {
            echo '<td><div id="'.$student_name.'-formarea">'
                    . '<form method="POST" id="form-'.$student_name.'">'
                    . '<input type="hidden" name="student_name" value="'.$student_name.'" />'
                    . '<select name="result" id="result"><option selected>Select Result</option>'
                    . '<option value="Pass">Pass</option><option value="Fail">Fail</option></select>'
                    . '</form></div>'
                    . '<div id="output-'.$student_name[$i].'"></div></td>';
        }
    echo'</tr>';
  }
  ?>

</table>


    </body>

</html>

2 个答案:

答案 0 :(得分:0)

您正在序列化Select元素,而不是表单,您必须序列化表单。 例如:

<form id="myForm" action="blabla" method="blabla">
    <select id="result" name="result">
    <option>Bla Bla Bla</option>
    </select>
    <input type="text" name="student_name" />
    <!-- ...more elements .... -->
</form>

所以你必须更换:

var result = $(this).serialize()
//by:
var result = $("#myForm").serialize()

答案 1 :(得分:0)

在您通过Ajax发送数据的文件中,您将'studentID'作为密钥,但在您要序列化的表单中,密钥是从name =''属性分配的。这会产生你的密钥:'student_name'和'result'。

if($_POST['studentID'] != ""){
    echo "Success";
}

您可以通过将以下内容放入Ajax发送和接收的php文件中来确定这一点。这将打印您的php文件接收的帖子内容数组。

print_r($_POST); 

结果表示该数组将显示在div中,告诉Ajax放置结果。

这是序列化您正在为Ajax工作的表单的好方法。

 var result = $(this).closest('form').serialize();