Счетчик CakePHP и jQuery при нажатии кнопки

#jquery #cakephp

#jquery #cakephp

Вопрос:

Я написал небольшой счетчик нажатий кнопок jQuery, я немного застрял, так как хочу отправить свою форму для добавления строки в базу данных mysql (cakephp), а затем, если она будет добавлена, обновите значение на странице, но если она не будет добавлена в базу данных, счетчик не увеличится.

Я застрял на том, как вернуть значение обратно в jquery, чтобы сказать, была ли это успешная вставка в базу данных или нет.

Вот код, который я использую в данный момент.

js:

 $(document).ready(function() 
{
$('.add-vote-link').click( function () 
{
    var img_id = $(this).attr('id');

    $.ajax({  
                type: "POST",  
                url: "/votes/vote/"   img_id,  
            //  data: "img_id="  img_id,  
                success: function()
        {  
                    //$('form#submit').hide(function(){$('div.success').fadeIn();});   
            $('#vote_counter_' img_id).html(function(i, val) { return  val 1 });
                }  
    });
});
});
  

html для обновления:

 <div id="vote_counter_<?php echo $img['Images']['img_id']; ?>">
    <?php echo $img['Images']['img_vote_count']; ?>
</div>  
  

php используется для отправки данных в базу данных, это также работает нормально и либо возвращает 1 для успешной вставки, либо 0, если вставка не была выполнена, как мне передать это обратно в мою функцию jquery, а затем получить инструкцию if для выполнения счетчика или нет.

Надеюсь, кто-нибудь сможет помочь, и iv объяснил это нормально 🙂

Спасибо!

Ответ №1:

Если все идеально, вам нужно всего лишь передать данные в формате json : D

На странице «/votes/голосование/» img_id вы должны указать, что она отображает данные в формате json

представление, скорее всего, будет примерно таким

 <?php
echo $javascript->object($results);
?>
  

$results должен представлять собой массив, подобный этому

 $results = array( 'result' => 1, //any other data you want to pass
);
  

и ваш макет для этого должен быть примерно таким

 <?php
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
header('Content-Type: text/x-json');
echo $content_for_layout;
?>
  

наконец, ваш $.ajax должен быть чем-то вроде этого

 $.ajax({  
            type: "POST",  
            url: "/votes/vote/"   img_id,  
        //  data: "img_id="  img_id,
            dataType: "json",  
            success: function( data ){  
                if (data.result == 1){
                     counter  ;
                } else {
                  //display error message or something
                }
                $('#vote_counter_' img_id).html(function(i, val) { return  val 1 });
            }  
});
  

Таким образом вы можете передавать любые данные в свой jquery после выполнения страницы cakephp, надеюсь, у вас это сработает: D (Я сделал это по памяти, так что, возможно, я чего-то не хватает : S)