Данные формы AJAX не передаются

#php #jquery #ajax

#php #jquery #ajax

Вопрос:

Мои данные «категория» не передаются через мой запрос AJAX.

Я следовал руководству от 2017, я предполагаю, что, возможно, мой синтаксис устарел или что-то подобное.

Вот фрагмент моего AJAX. У меня есть несколько выведенных категорий, на которые пользователь может нажать.

  echo '<div class ="cats" id="categories">';
 echo '<button class="catbutton" name="all" value="all">All 
 categories</button><br>';

 while($row = mysqli_fetch_array($resultcats)) {
$jada = $row['category'];
echo ' <button id="category" class="catbutton" name="cat-submitted" 
value="'.$row['category'].'">'.$row['category'].'</button><br>';

echo '</br>';

 }
echo '</div>';

?>
<div id="display">

</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>


<script type="text/javascript">
  $(document).ready(function() {
    $('#categories .catbutton').each(function() {
      $(this).click(function(){
var category = $("#catbutton").val();
$.ajax({
  type: "POST",
  url: "demo.php",
  data: category,
  cache: false,
  success: function(result){
$("#display").html(result);
}
});

return false;

});
});
});
  

Затем я хочу использовать AJAX, когда пользователь нажимает на одну из категорий.
Я хочу получить значение выбранной категории, чтобы позже я мог использовать его для SQL-запроса. Сейчас я просто пытаюсь посмотреть, смогу ли я получить переменную с этим кодом на моем «demo.php «:

 <?php
$category = $_POST['category'];
echo $category;

echo "form submitted";
echo $category;

 ?>
  

AJAX работает частично потому, что:

Когда пользователь нажимает на категорию, «отправленная форма» появляется, как и должно быть, однако вы не видите, что отображается какая-либо переменная категории, что является моей главной целью.

Комментарии:

1. Измените data: category на data: { "category": category } в ваших настройках ajax.

2.Вы пытаетесь получить значение кнопки с помощью id catbutton но на самом деле у вас нет такой кнопки. возможно, вы имеете в виду var category = $(this).val(); ?

3. @Nick вы правы. Я просматривал другие сообщения SO, чтобы исправить другую проблему, которая была решена путем отказа от использования идентификаторов, я тогда не исправлял эту строку. Спасибо.

4. @Chao1920 не беспокойтесь, рад, что сработало.

Ответ №1:

Перед публикацией здесь у меня была более ранняя проблема с пользовательским щелчком, реагирующим только на мою первую категорию.

Я решил это, просмотрев другие сообщения SO, в которых предлагалось не использовать идентификаторы для каждой кнопки. Однако затем я забыл изменить var category = $ («#catbutton»).val(); на var category = $ (this).val();

Изменение вышеуказанного и внесение изменений: data: category в data: { «категория»: category }

Решена моя проблема.

Ответ №2:

Ваш ajax-код кажется неправильным. Вы должны изменить код передаваемого параметра, как показано ниже:

   $.ajax({
      type: "POST",
      url: "demo.php",
      data: {"category": category}
      cache: false,
      success: function(result){
          $("#display").html(result);
      }
  });
  

Здесь вам нужно передать данные, как указано выше. Надеюсь, это вам поможет.