Как мне активно увеличивать мой счетчик на основе моих результатов AJAX? - PullRequest
0 голосов
/ 01 июня 2011

Я нахожусь на последнем этапе моего первого проекта ajax.Я сделал большой палец вверх значок, который при нажатии увеличивает столбец в базе данных с помощью этого кода:

ЗДЕСЬ HTML И JQUERY на видимой странице

<div id="comment_id">+1</div>
<div id="thumb_thumb">                              
    <?php $comment_id = $result['id'];?>
    <a class="myButtonLink" href="Profile_test.php?id=<?php echo $prof->id; ?>" id="<?php echo $comment_id; ?>">Vote Up!</a>
</div>

    <script>
    $('.myButtonLink').click(function(e) {
      e.preventDefault();
      var comment_id = $(this).attr('id');
      $.ajax({ type: 'POST',
               url: 'thumbs.php',
               data: 'comment_id=' + comment_id,
               success: function(data) {
                  alert(data);
                  if(data.result == "error") {
                      alert(data.msg);
                 } else {
                      $('#numvotes').html(data.msg);
                 }
             }
      });
    });        
    </script>

ЗДЕСЬ СКРЫТАЯ СТРАНИЦА PHP, НА КОТОРУЮ ОТПРАВЛЯЕТСЯ

    <?php
     require_once($_SERVER['DOCUMENT_ROOT']
     . '/includes/system/init.php');

     // 1. CHECK AND SEE IF THE
     "$comment_id" IS VALID. I AM GOING TO
     RETREIVE THE VALUE OF THE $_POST BEING
     SENT FROM THE PHP PAGE THAT IS SENDING
     THE REQUEST

     /* QUERY TO CHECK $_POST DATA WITH: */

    /* this is grabbing id that jquery
     sent over via post */
     if(isset($_POST['comment_id'])) {


         /* making a variable out of the
     grabbed id */ $retreived_comment_id =
     $_POST['comment_id'];  


     $query = "UPDATE `CysticAirwaves` SET
     `thumbsUp` = `thumbsUp` + 1 WHERE `id`
     = '" . $retreived_comment_id . "'"; $request =
     mysql_query($query,$connection) ;
     $result = mysql_fetch_array($request);


     }
   ?>

Так что теперь мне просто нужно иметь возможность динамически настроить счетчик при нажатии большого пальца и указанном комментариипомечен плюсом в БД

<div id="comment_id">
            +1 //NEED TO MAKE THIS ACTUALLY COUNT
</div>

Заранее спасибо

Ответы [ 4 ]

1 голос
/ 01 июня 2011

Пара вещей.

1) Необходимо убедиться, что значение POST является целым, а не произвольными и / или вредоносными данными

$retreived_comment_id = filter_var($_POST['comment_id'], FILTER_SANITIZE_NUMBER_INT);
if(!is_int($retreived_comment_id)) {
  echo 'error';
  exit;
}

2) Хорошая идея - убедиться, что все данные экранированы при использованиипользовательский ввод

$query = "
  UPDATE `CysticAirwaves` 
  SET `thumbsUp` = `thumbsUp` + 1 
  WHERE `id` = ".mysql_real_escape_string($retreived_comment_id)."
"; 

$request = mysql_query($query, $connection);

3) Возврат 'success' в случае успеха и 'error' при ошибке

$request = mysql_query($query, $connection);
if($request) {
  echo 'error';      
} else {
  echo 'success';
}

exit;

4) Увеличение счетчика с помощью jQuery

success: function(data) {
  if(data == "success") {
    var $comment = $('#comment_id');
    $comment.html($comment.text()+1);
  }
}
1 голос
/ 01 июня 2011
var currentCount = $('#comment_id').text();

$('#comment_id').text(++currentCount);
0 голосов
/ 01 июня 2011

Я заметил, что вы ничего не возвращаете из своего PHP-кода обратно в ajax.Вам нужно вернуть массив, по крайней мере, с «msg» и «error», чтобы удовлетворить ваш текущий код в случае успеха.Затем создайте другой элемент массива для «success» => 1, если ошибок не было.

//your php should return your array at the end of your function like this:
return array("msg" => "some message to return", "error" => "some error if you have one", "success" => [1 or 0] );

//ajax function blah blah blah
success: function(data){
    if( data.success == 1 ){
        var currentCount = $("#comment_id").text().substr(1);
        $("#comment_id").text( currentCount+1 );
     }
0 голосов
/ 01 июня 2011

Поместите эту строку в запрос ajax succes вместо alert (data)

document.getElementById('comment_id').innerHTML = data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...