始终获得第一个输入元素的值。麻烦JQuery Ajax

时间:2013-11-01 18:11:49

标签: jquery ajax

$ divCreator下面是一个变量。它可以从1到10取值。我在php中的while循环中使用下面的html。现在我想做的是我想将两个变量传递给php脚本。一个是quesID,另一个是testID。我已经有了testID的值。但是问题出现了问题。我总是将quesID值设为1.这是来自while循环构建的第一个表单的值。 HTML代码是:

<form id="form_create_ques" action="" method="get">
    <div class="grid-6 grid grey">
        <input id="quesid_form" name="quesID" type="text" value="<?php echo $divCreator;  ?>" />
        <input type="submit" class="button_create_ques" value="<?php echo $divCreator; ?>" />
    </div>
</form>

Jquery代码:(我的Jquery相当弱,所以我需要一些帮助)。

<script type="text/javascript">
 $(document).ready(function (){
  $(".button_create_ques").click(function(){
    var form_data = $("#form_create_ques").serialize(); //Always returns quesID=1
    alert(form_data);
    $.ajax({
    url: "create_ques.php?testID=<?php echo $_GET['testID']; ?>",
    type: 'GET',
    data: form_data,
    success: function() 
            {
             //Do something..
            }
        });
        return false;
      });
    });

如果您有更好或替代解决方案,请解释。我真的很感激。对不起,我还在学习Jquery。

3 个答案:

答案 0 :(得分:1)

id值在文档中必须是唯一的。由于您的表单都具有相同的id,因此使用$("#form_create_ques")之类的选择器将始终返回此id的第一个匹配项。

您可以完全删除id并使用此功能根据按钮获取form

var form_data = $(this).closest("form").serialize();

答案 1 :(得分:1)

有两种可能的方式:

1:添加新的hidden字段:

<input type="hidden" name="quesID" value="<?php echo addslashes(htmlspecialchars($_GET['testID'])); ?>" />

2:删除data: form_data,并修改:

url: "create_ques.php?testID=<?php echo $_GET['testID']; ?>&" + form_data,

答案 2 :(得分:1)

由于ID必须是唯一的,因此您无法为所有表单提供相同的ID。所以遗漏ID。

<form action="" method="get">
    <div class="grid-6 grid grey">
        <input id="quesid_form" name="quesID" type="text" value="<?php echo $divCreator;  ?>" />
        <input type="submit" class="button_create_ques" value="<?php echo $divCreator; ?>" />
    </div>
</form>

然后,您应该在jQuery中使用DOM遍历函数来查找与单击的按钮对应的表单:

 $(document).ready(function (){
  $(".button_create_ques").click(function(){
    var form_data = $(this).closest("form").serialize();
    alert(form_data);
    $.ajax({
    url: "create_ques.php?testID=<?php echo $_GET['testID']; ?>",
    type: 'GET',
    data: form_data,
    success: function() 
            {
             //Do something..
            }
        });
        return false;
      });
    });