Сериализация выкачивает пустые массивы

Поэтому я пытаюсь отправить данные формы через ajax и использую для этого сериализацию. Я также попробовал serializeArray и получаю те же результаты. Я надеялся, что кто-то сможет помочь мне решить проблему, потому что я чувствую, что перепробовал все. Пожалуйста, просмотрите фрагмент моего кода ниже:

function quizSubmit($quiz){
      console.log($quiz);
      var form='#'+$quiz;

      var data1=$(form).serializeArray();
      console.log(data1);
       $.ajax({
         type  : 'POST',
         url  : 'quizsubmit.php?quiz='+$quiz,
         data : data1,
         beforeSend : function() {
             $('#checklist-info-container').html('processing');
               console.log("sending");
         },
         error : function() {
             $('#checklist-info-container').html('failure');
               console.log("fail");
         },
         // success callback
         success : function (response) {
             $('#checklist-info-container').html(response);
               console.log("success");
         },
         timeout : 3000,
       })
    }
<table class="checklist-table">
              <form id="<?php echo $id; ?>" name="q1" method="post">
              <tr>
                <td class="checklist-info-title"><?php echo($title); ?></td>
              </tr>
              <tr>
                <td class="checklist-info-description"><div>
                  <div class="form-group required quiz-question">
                    <label class="control-label" for="question1">What did you learn?</label>
                    <div class="radio">
                      <label><input type="radio" name="question1" value="answer1">Nothing</label>
                    </div>
                    <div class="radio">
                      <label><input type="radio" name="question1" value="answer2">Something</label>
                    </div>
                  </div>
                  <div class="form-group required quiz-question">
                    <label class="control-label" for="question2">Question 2</label>
                    <div class="radio">
                      <label><input type="radio" name="question2" value="answer1">Answer 1</label>
                    </div>
                    <div class="radio">
                      <label><input type="radio" name="question2" value="answer2">Answer 2</label>
                    </div>
                  </div>
                  <div class="form-group required quiz-question">
                    <label class="control-label" for="question3">Question 3</label>
                    <div class="radio">
                      <label><input type="radio" name="question3" value="answer1">Answer 1</label>
                    </div>
                    <div class="radio">
                      <label><input type="radio" name="question3" value="answer2">Answer 2</label>
                    </div>
                  </div>
                  <div class="form-group required quiz-question">
                    <label class="control-label" for="question4">Question 4</label>
                    <div class="radio">
                      <label><input type="radio" name="question4" value="answer1">Answer 1</label>
                    </div>
                    <div class="radio">
                      <label><input type="radio" name="question4" value="answer2">Answer 2</label>
                    </div>
                  </div>
                </div></td>
              </tr>
              <tr>
                <td class="quiz-button"><button class="btn btn-success" onclick="quizSubmit(<?php echo $id; ?>);">Submit</button></td>
              </tr>
            </form>
            </table>

Вторая консольная распечатка журнала продолжает печатать массив длины 0 без чего-либо в нем. но я не уверен почему.

1 ответ

Вы должны изменить свой код JavaScript. Замените $quiz на викторину

function quizSubmit(quiz){
  console.log(quiz);
  var form='#'+quiz;

  var data1=$(form).serializeArray();
  console.log(data1);
  .......
  .......
}

jQuery устанавливает глобальную переменную $ для объекта с рядом особых поведений, поэтому переменные, начинающиеся с $, часто зарезервированы для переменных или значений, связанных с jQuery.

В html-коде вы не передаете переменную как объект jquery. кажется, вы передаете как переменную javascript.

Другие вопросы по тегам