#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);
}
});
Здесь вам нужно передать данные, как указано выше. Надеюсь, это вам поможет.