2014-02-06 5 views
0

У меня возникли проблемы с использованием 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, и он работает нормально, но я не считаю, что это хорошо, чтобы посмотреть перезагрузку страницы после нажатия кнопки. Заранее спасибо!

+0

вы можете попробовать тип: «POST» для изменения ресурсов сервера? Вам не нужно перезагружать страницу или что-либо еще, так как вы используете ajax. – lovetostrike

+0

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

+0

Другое дело, где вы обновляете значение «sub»? Я этого не вижу. Прямо сейчас, это всегда 0, то есть он будет каждый раз называть subscribe.php. – lovetostrike

ответ

0

Обновить значение ваших данных, к югу внутри ваших функций успеха

Ибо если ветвь

$(this).data('sub', 1); 

для еще филиала

$(this).data('sub', 0); 
Смежные вопросы