У меня возникли проблемы с использованием ajax. Вы можете мне помочь?Обновление кнопки Href без перезагрузки страницы
У меня есть кнопка href, которая помечена Подписываться, если $ sub равно 0 и Отменить подписку, если $ sub не является. Кстати, $ sub является результатом запроса. Когда я щелкнул его, чтобы подписать, $ sub станет 1 (строка вставлена в базу данных), а метка изменена на Unsubscribed. Не перезагружая страницу, я снова нажал кнопку (теперь обозначен Unsubscribed), но вместо того, чтобы делать $ sub 0 (удаляя вставленную строку), вместо этого он вставлял другую строку в db.
Это мой запрос к базе данных для $ подразделов, который находится в той же самой странице с помощью кнопки HREF
$buddy_request = mysqli_query($connection,"SELECT count(subscription_id) FROM SUBSCRIPTION
WHERE subscriber = '$viewer' and subscribed = '$viewed'");
while($row = mysqli_fetch_array($buddy_request))
{
$sub = $row['count(subscription_id)'];
}
Это кнопка
<a href='' id='subscribe' data-sub = '<?php echo $sub; ?>' ><?php if($sub == 0){echo "Subscribe";} else {echo "Unsubscribe";}?></a>
Вот мой Аякс
$("#subscribe").click(function(e)
{
e.preventDefault();
var sub = $(this).data('sub');
//to subscribe
if(sub == 0)
{
$.ajax({
url: 'subscribe.php',
type: 'GET',
dataType: 'json',
context: this,
success: function(result)
{
if (result == true)
$(this).html('Unsubscribe');
}
});
}
//to unsubscribe
else
{
$.ajax({
url: 'unsubscribe.php',
type: 'GET',
dataType: 'json',
context: this,
success: function(result)
{
if (result == true)
$(this).html('Subscribe');
}
});
}
})
, и это подписка.php
$result = false;
$sql="INSERT INTO SUBSCRIPTION (subscriber,subscribed)
VALUES($viewer,$viewed)";
if (!mysqli_query($connection,$sql))
{
die('Error: ' . mysqli_error($connection));
}
$result = true;
echo json_encode($result);
Я пробовал использовать location.reload() в каждом успешном ajax, и он работает нормально, но я не считаю, что это хорошо, чтобы посмотреть перезагрузку страницы после нажатия кнопки. Заранее спасибо!
вы можете попробовать тип: «POST» для изменения ресурсов сервера? Вам не нужно перезагружать страницу или что-либо еще, так как вы используете ajax. – lovetostrike
У меня все еще есть такой же результат. когда я нажимаю подписку на нее, она сразу же будет отписана без перезагрузки. Проблема в том, что когда я щелкнул ее снова сразу после того, как она перестает подписываться, вместо отказа от подписки она выполняет функцию подписки. Спасибо за ответ. – Nhiz
Другое дело, где вы обновляете значение «sub»? Я этого не вижу. Прямо сейчас, это всегда 0, то есть он будет каждый раз называть subscribe.php. – lovetostrike