Почему я получаю неопределенное значение для переключателя да / нет - PullRequest
2 голосов
/ 13 мая 2011

Я использую 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 ]

3 голосов
/ 13 мая 2011

Ваш селектор

$('YesNo1') говорит искать тег с именем <YesNo1> как в элементе

3 голосов
/ 13 мая 2011

вам нужно #, чтобы получить элементы по id, заключенные в jQuery obj

$('#YesNo1').val(),
$('#YesNo2').val()
2 голосов
/ 13 мая 2011

что вы хотите сделать, это получить ввод по имени, где он выбран

$(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 />'));
 //...

рабочая демонстрация

0 голосов
/ 14 мая 2011

Вам нужны следующие селекторы:

$('input[name="YesNo1[]"]:checked').val(); 
$('input[name="YesNo2[]"]:checked').val();
0 голосов
/ 14 мая 2011

Я использовал это прошлое с большим успехом. Вам не нужно хранить значение в массиве. Сделайте ваш вклад так:

<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 будет содержать значение выбранной опции

0 голосов
/ 13 мая 2011

Я почти уверен, что ваша проблема с названиями переключателей. Чтобы упростить вещи, я бы использовал структуру именования, такую ​​как Q1Yes, Q1No и т. Д., Или даже попытался бы сформулировать ваши вопросы так, чтобы, если переключатель был отмечен, это означало, что пользователь ответил «да» и оставил его без проверки для «нет». В этот момент у вас могут быть названия ваших переключателей, а именно Вопрос1 и Вопрос2.

0 голосов
/ 13 мая 2011

Вы не используете правильный селектор в своих звонках в jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...