我已经写了一个小的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是用来提交数据到db的,这也很好用,如果成功插入,则返回1,如果没有插入,则返回0,我如何将其传递回jquery函数,然后使用if语句执行计数器++或不返回。
希望有人能帮上忙,iv解释一下好吗:)
谢谢!
发布于 2011-10-20 20:55:49
如果一切都很完美,您只需要将数据作为json :D进行传递
在页面"/votes/vote/“+ 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 });
}
});像这样,你可以在cakephp页面执行后将任何数据传递给你的jquery,希望这对你有用:D (我是从内存中做的,所以我可能遗漏了一些东西:S)
https://stackoverflow.com/questions/7826267
复制相似问题