CakePHP и jQuery Counter по нажатию кнопки - PullRequest
0 голосов
/ 19 октября 2011

Я написал небольшой счетчик кликов на кнопках jQuery, немного застрял, так как хочу отправить свою форму, чтобы добавить строку в mysql db (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 для счетчика ++ или нет.

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

Спасибо!

1 Ответ

0 голосов
/ 20 октября 2011

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

На странице "/ голоса / голосование /" + img_id следует указать, что они отображают данные json

представление может быть примерно таким

<?php
echo $javascript->object($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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...