Отправить личное сообщение для JQuery

У меня есть раздел комментариев формы, в котором пользователь может ответить на комментарий. Каждый комментарий имеет форму с ответным полем. Я получаю комментарии из базы данных и запускаю следующий цикл.

@foreach($responses as $response) <li>{{$response->answer}}</li> <form action="{{action('DiscussionController@postAnswerQuestion', [$entry_year, $grade_id, $subject_id, $question_id])}}" method="post" id="form1"> <input type="text" name="reply" value="" placeholder="Reply"> <input type="hidden" name="response_id" value="{{$response->id}}"> <input type="submit" name="" value="reply"> </form> @endforeach 

Когда я отправляю php-форму, используя обычный PHP, она представляет только прекрасную, но при использовании jquery ajax и следующего кода.

  var formData = { 'answer' : $('input[name=answer]').val(), 'reply' : $('input[name=reply]').val(), 'response_id' : $('input[name=response_id]').val(), }; 

Он возвращает значение первого ввода только после некоторого поиска в googling, который я нашел, что я должен использовать сериализацию, и поэтому вместо вышеупомянутого кода jquery я использовал следующее

  var formData = $('#form1').serialize(); 

Но теперь значения arent фиксируются и значения приходят к php как null. Как решить эту проблему?

Большое спасибо, ребята!

Во-первых, замените id на форму class .

 <form action="..." method="post" class="commentForm"> <input type="text" name="reply" value="" placeholder="Reply"> <input type="hidden" name="response_id" value="{{$response->id}}"> <input type="submit" name="" value="reply"> </form> 

Затем зарегистрируйте обработчик отправки событий в формах, чтобы сделать вызов ajax. Внутри обратного вызова обработчика события this относится к представленной форме. Вы можете использовать это, чтобы получить значения входов для этой формы.

 $('.commentForm').submit(function(event) { event.preventDefault(); var $form = $(this); var formData = { answer : $form.find('input[name=answer]').val(), reply : $form.find('input[name=reply]').val(), response_id: $form.find('input[name=response_id]').val() }; // Make the ajax call here. }); 

Однако вы должны иметь возможность пропустить formData объекта formData и использовать для вызова ajax следующее:

 data: $(form).serialize(), 

Ваш код зацикливается и создает несколько форм с одинаковым именем текстовых полей, поэтому jquery не может распознать type = 'name', которые вы указываете при записи $ ('input [name = answer]'). Val ();

Поэтому я предлагаю вам добавить id ко всем трем входным тегам. Для каждого цикла все теги 3 должны иметь одинаковый идентификатор. Затем вы можете узнать их индивидуально.