#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)