为什么我没有定义是/否单选按钮

时间:2011-05-13 17:29:31

标签: php jquery ajax

我正在使用Ajax和jQuery和PHP。

当用户提交多部分表单的一部分时,结果将显示在新的div中。表格中有几个是/否单选按钮。但结果中没有显示“是”或“否”,而是“未定义”。关于我在这里做错了什么想法?

HTML

<div class="usedYesNo">
  <h5>Question 1</h5>
  <ul class="YesNo">
    <li>
      <input class="option-child" type="radio" name="YesNo1[]" value="Yes" >
      <label for="Yes">Yes</label>
    </li>
    <li>
      <input class="option-child" type="radio" name="YesNo1[]" value="No" >
      <label for="No">No</label>
    </li>
 </ul>
</div>
<div class="usedYesNo">
  <h5>Question 2</h5>
  <ul class="YesNo">
    <li>
      <input class="option-child" type="radio" name="YesNo2[]" value="Yes" >
      <label for="Yes">Yes</label>
    </li>
    <li>
      <input class="option-child" type="radio" name="YesNo2[]" value="No" >
      <label for="No">No</label>
    </li>
 </ul>
</div>

的jQuery

$(form).ajaxSubmit({

    type: "POST",
    data: {

        YesNo1 : $('YesNo1').val(),
        YesNo2 : $('YesNo2').val()

       },
    dataType: 'json',
    url: './includes/ajaxtest3.php',
    error: function() {alert("error!");},                   
    success: $('#output2').html(data.message.join('<br />'));
 //...

PHP

 $return['message'] = array();
 $return['message'][] = 'Answer to first question: ' . $_POST['YesNo1'];
 $return['message'][] = 'Answer to second question: ' . $_POST['YesNo2'];
  echo json_encode($return);

7 个答案:

答案 0 :(得分:3)

你需要#来获取包含在jQuery obj

中的id的元素
$('#YesNo1').val(),
$('#YesNo2').val()

答案 1 :(得分:3)

您的选择器

$('YesNo1')说要在元素

中查找名为<YesNo1>的标记

答案 2 :(得分:2)

你想要做的是按名称选择输入

$(form).ajaxSubmit({

    type: "POST",
    data: {

        YesNo1 : $('input[name="YesNo1[]"]:checked').val();
        YesNo2 : $('input[name="YesNo2[]"]:checked').val(); 

       },
    dataType: 'json',
    url: './includes/ajaxtest3.php',
    error: function() {alert("error!");},                   
    success: $('#output2').html(data.message.join('<br />'));
 //...

working demo

答案 3 :(得分:0)

您在调用jQuery时没有使用正确的选择器。

答案 4 :(得分:0)

我很确定您的问题是单选按钮的名称。为了简化操作,我会使用像Q1Yes,Q1No等命名结构,甚至尝试用你的问题来表达,如果选中单选按钮,则意味着用户回答是,并将其保持为未选中状态。您可以在此时将单选按钮的名称设为Question1和Question2。

答案 5 :(得分:0)

我用过这个过去非常成功。 您不需要将值存储在数组中。输入如下:

<input class="option-child" type="radio" name="YesNo1" value="Yes" > 
<input class="option-child" type="radio" name="YesNo1" value="Yes" > 

然后,您可以使用jquery拉取所选值的结果。

var YesNo1 =$("input[name=YesNo1]:checked").val();

YesNo1将包含所选选项的值

答案 6 :(得分:0)

您需要的选择器是:

$('input[name="YesNo1[]"]:checked').val(); 
$('input[name="YesNo2[]"]:checked').val();