2015-09-11 6 views
3

У меня есть DIV, который содержит столько, сколько нравится из базы данных Mysql. Я нажимаю кнопку, которая говорит, как и она будет проходить через функцию ajax like (id1) с параметром.Ajax div обновить на успех не работает

Ajax использует страницу likes.php и делает все вакансии, добавляя в базу данных. И он выдает данные JSON как обратную связь с код ноль в случае успеха. И один, если не удается.

В разделе успеха ajax _js.code это тот, который тогда уже понравился. Таким образом, мы видим сообщение. Но моя проблема в том, что я не могу обновить DIV, когда код равен нулю, что является успешным. Он либо подходит к верхней части страницы, а не находится в DIV любит.

Для получения информации он также добавляет хэш-код TAG в конце URL-адреса.

Button line, я хочу, чтобы кнопка, которая должна работать как facebook или другие важные приложения. Не перемещая страницу сверху. И сразу же нажмите кнопку активации.

Моя главная страница

<input type="checkbox" id="like" onclick="like(<?php echo $_SESSION["id"];?>);"/> 
<div id="likes"> 
<?php 
    $like = 0; 
    $conditions = "WHERE id = $_SESSION[id]"; 
    echo $total = $ll->get_likes($conditions); //displaying how many likes 
?> 
</div> 

Ajax

<script> 
function like(id1) { 

    $.ajax ({ 
     type: "POST", 
     url: "likes.php", 
     data: {id: id1 }, 
     success: function(feedback) { 

      var _js = jQuery.parseJSON(feedback); 

      $("#likes").html(_js.message); //printing message here 
      $("#likes").attr("class", ""); //resetting class of CSS 

      if(_js.code == 0) { 
       /**I want to refresh DIV likes after this **/ 
      } else { 
       $("#likes").addClass("red"); //This is working fine, i get message when already liked 
      } 
     } 
    }); 
} 

likes.php

<?php 
if (isset($_POST)) { 
    //All PHP staff goes here and its working 
    if ($success) { 
     $return = array (
       'code' = 0, 
       'message' = "" 
       ); 
    } else { 
     $return["code"] = 1; 
     $return["message"] = "You already liked"; 
    } 
    echo json_encode($return);//Converting PHP into JSON format 
} 
?> 
+0

средство обновления, вы хотите обновить счетчик как? –

+0

Вам нужно получить и вернуть данные из таблицы в ваш вызов ajax, а затем просто обновить div с новыми понравившимися. – mdamia

ответ

1

изменения в следующие HTML и JS

<input type="checkbox" id="like" onclick="return like(<?php echo $_SESSION["id"];?>);"/> 



<script> 
function like(id1) { 

$.ajax ({ 
    type: "POST", 
    url: "likes.php", 
    data: {id: id1 }, 
    success: function(feedback) { 

     var _js = jQuery.parseJSON(feedback); 

     $("#likes").html(_js.message); //printing message here 
     $("#likes").attr("class", ""); //resetting class of CSS 

     if(_js.code == 0) { 
      /**I want to refresh DIV likes after this **/ 
     } else { 
      $("#likes").addClass("red"); //This is working fine, i get message when already liked 
     } 
    } 
}); 
return false; 
} 
1

@tashi,

Существует ошибка синтаксиса в likes.php. Используйте оператор => при объявлении массивов. Код должен быть следующим.

$return = array (
    'code' => 0, 
    'message' => "" 
); 
+0

Pradeep, извините, я не упоминал, что коды работают нормально. Это упрощенная версия. Который я написал. После того, как понравилось обновляться в базе данных, как я могу обновить DIV-понравится с обновленным? – tashi

0

, если вы не хотите отображать не из таких, на успех Изменение кода следующим образом

В likes.php

<?php 
if (isset($_POST)) { 
    //All PHP staff goes here and its working 
    if ($success) { 
     $return = array (
       'code' => 0, 
       'message' => "", 
       'likes_count' => $likes_count //get updated likes count from db 
       ); 
    } else { 
     $return["code"] = 1; 
     $return["message"] = "You already liked"; 
     //here you do not need to send the like count 
    } 
    echo json_encode($return);//Converting PHP into JSON format 
} 
?> 

JavaScript код

function like(id1) { 

    $.ajax ({ 
     type: "POST", 
     url: "likes.php", 
     data: {id: id1 }, 
     success: function(feedback) { 

      var _js = jQuery.parseJSON(feedback); 

      $("#likes").html(_js.message); //printing message here 
      $("#likes").attr("class", ""); //resetting class of CSS 

      if(_js.code == 0) { 
       /**I want to refresh DIV likes after this **/ 
       $('#likes').html(_js.likes_count);//this will update your likes count 
      } else { 
       $("#likes").addClass("red"); //This is working fine, i get message when already liked 
      } 
     } 
    }); 
} 
Смежные вопросы