Ⅰ ajax 实现点赞功能
原理:
1.通过ajax将数据提交到服务端。
2.服务端处理并返回结果。
jquery的ajax形式如下:
$.ajax({
url:'update_Praise.php',//处理数据的地址
type:'post',//数据提交形式
data:{'id':1,'user':123},//需要提交的数据
success:function(data){//数据返回成功的执行放大
if(data==1){//成功
alert('执行成功');
}
if(data==2){//失败
alert('执行失败');
}
}
});
服务端处理数据:
//post接受数据
$id=$_POST['id'];
$user=$_POST['user'];
$sql="updatetablesetPraise=Praise+1whereid=".$id;//更新点赞
$sql2="insertintotable2uservalues('".$user."')";//插入点赞记录
if(mysql_query($sql)&&mysql_query($sql2)){//执行sql语句
echo1;//输出1(ajax的data参数)
}else{
echo2;//输出2(ajax的data参数)
}
Ⅱ PHP点赞和踩功能的怎么实现,代码怎么写
这个问题应该属于javascript类,你这样提问会导致知道分类分到php里去了。
实际上应该是前端控制的,有人说了,可以用jquery的$.post,如果你要用两个form, 那就不能用$('form')这种方式提交,因为会选到两个Form,可以分别加标示区分
<formid='good'>
</form>
<formid='bad'>
</form>
<script>
$('#good').submit();
</script>
而且点赞和踩,这种功能,不需要用到form, 两个Button就可以了
Ⅲ 用ThinkPHP+JQuery实现无刷新点赞、踩、收藏功能
//点赞
$(".log_digg").on('click', function () {
var post_id = $(this).parent().parent().find(".post_id").val();
var log_digg_num =$(this).find(".log_digg_num_"+post_id).html();
log_digg_num=parseInt(log_digg_num);
var text = $(this).find(".digg_text_"+post_id).text();
if(text=="点赞"){
$.post(URL_PATH+"/index/Index/digg_log",{'post_id':post_id},function(data){
var data=JSON.parse(data);//接收解码的数据
if(data.code=="200"){
alert(data.msg);
log_digg_num = log_digg_num+1;
$(".log_digg_num_"+post_id).html(log_digg_num);
$(".digg_text_"+post_id).text('取消点赞');
}
else
{
alert('点赞失败');
}
});
}
else{
$.post(URL_PATH+"/index/Index/cancel_digg_log",{'post_id':post_id},function(data){
var data=JSON.parse(data);//接收解码的数据
if(data.code=="200"){
alert(data.msg);
log_digg_num = log_digg_num-1;
$(".log_digg_num_"+post_id).html(log_digg_num);
$(".digg_text_"+post_id).text('点赞');
}
else
{
alert('取消点赞失败');
}
});
}
})
如果需要后台传输就用ajax的给你个例子:
$.ajax({ url: "test.html", context: document.body}).done(function() { $(this).addClass("done");});
Ⅳ 【新手求助】PHP点赞功能,急!!!
html:
<head>
<scriptsrc="common/js/jquery.js"type="text/javascript"></script>
<scriptlanguage="JavaScript"type="text/javascript">
jQuery(function($){
//这两个是鼠标放上去的效果
$(".zhan").hover(function(){
$(this).children("b").toggle();
});
$(".cai").hover(function(){
$(this).children("b").toggle();
});
});
</script>
<scripttype="text/javascript">
<!--这两个点击事件可以改进的,因为事件问题,所以就弄了两个点击事件
$(document).ready(function(e){
//点赞(给力)
$('.zhan').click(function(){
varzhan=$(this);
varleft=parseInt($(this).offset().left)+10,top=parseInt($(this).offset().top)-10,obj=$(this);
$(this).append('<divid="zhan"><b>+1</b></div>');
$('#zhan').css({'position':'absolute','z-index':'1','color':'#C30','left':left+'px','top':top+'px'}).animate({top:top-10,left:left+10},'slow',function(){
$(this).fadeIn('fast').remove();
varNum=parseInt(obj.find('span').text());
Num++;
obj.find('span').text(Num);
});
$.ajax({
url:"ajax.php?action=zan",
type:"post",
data:"answer_id="+$(this).attr("alt"),
success:function(datas){
zhan.unbind('click');
zhan.parent().parent().siblings().children().children().unbind('click');
zhan.parent().parent().siblings().children().children().attr("class","evaluate-inner");
zhan.attr("class","evaluate-inner");
}
});
});
//踩(不给力)
$('.cai').click(function(){
varcai=$(this);
varleft=parseInt($(this).offset().left)+10,top=parseInt($(this).offset().top)-10,obj=$(this);
$(this).append('<divid="cai"><b>-1</b></div>');
$('#cai').css({'position':'absolute','z-index':'1','color':'#7DAAD5','left':left+'px','top':top+'px'}).animate({top:top-10,left:left+10},'slow',function(){
$(this).fadeIn('fast').remove();
varNum=parseInt(obj.find('span').text());
Num--;
obj.find('span').text(Num);
});
$.ajax({
url:"ajax.php?action=cai",
type:"post",
data:"answer_id="+$(this).attr("alt"),
success:function(datas){
cai.unbind('click');
cai.parent().parent().siblings().children().children().unbind('click');
cai.parent().parent().siblings().children().children().attr("class","evaluate-inner");
cai.attr("class","evaluate-inner");
}
});
});
});
//-->
</script>
</head>
<body>
<!--给力开始-->
<spandata-evaluate="0"id="evaluate-1908165795"class="evaluate"alog-action="qb-zan-btn"><spanclass="evaluate-outer">
<!-----判断对应的回答的id是否在自己创建的存储赞和踩数据的php文件,如果赞或者踩存在一个的话就不能再单击---->
<spanclass="evaluate-inner{if$answer_datas.ans_id|in_array:$zan_listor$answer_datas.ans_id|in_array:$cai_list/}{else/}zhan{/if/}"alt="{$answer_datas.ans_id/}"><bstyle="display:none"class="evaluate-tipevaluate-num-fixed">给力</b><bclass="evaluate-numevaluate-num-fixed"><span>{$answer_datas.goods/}</span></b></span></span></span>
<!--不给力开始-->
<spandata-evaluate="0"id="evaluate-bad-1908165795"class="evaluateevaluate-bad"alog-action="qb-evaluate-outer"><spanclass="evaluate-outer"><spanclass="evaluate-inner{if$answer_datas.ans_id|in_array:$zan_listor$answer_datas.ans_id|in_array:$cai_list/}{else/}cai{/if/}"alt="{$answer_datas.ans_id/}"><bstyle="display:none;"class="evaluate-tipevaluate-num-fixed">不给力</b><bclass="evaluate-numevaluate-num-fixed"style="display:inline-block;"><span>{$answer_datas.bads/}</span></b></span></span></span>
</div>
</div>
<!--评论回答开始-->
</body>
</html>
php
<?php
$action=$_GET['action'];//获取get方式传过来的action
require_once("array/ovovsys_zan.php");
switch($action){
case'detail':
/*****赞开始****/
$zan_list=json_decode(str_replace("'",'"',$zan_json),true);
$zan_lists=array();
foreach($zan_listas$key=>$value){
if($value['uid']==$uid){
$zan_lists[]=$value['answer_id'];
}
}
$smarty->assign('zan_list',$zan_lists);//查询当前登录的会员的uid对应的点赞的回答
/*****赞结束****/
/*****踩开始****/
$cai_list=json_decode(str_replace("'",'"',$cai_json),true);
$cai_lists=array();
foreach($cai_listas$key=>$value){
if($value['uid']==$uid){
$cai_lists[]=$value['answer_id'];
}
}
$smarty->assign('cai_list',$cai_lists);//查询当前登录的会员的uid对应的踩的回答
/*****踩结束****/
$smarty->display('自己的静态页面');
exit();
break;
}
?>
ajax
<?php
require_once("array/ovovsys_zan.php");//这里引用array文件夹中的数组文件
$action=trim($_GET['action']);
if(empty($action)){
echo'<fontcolor=red>参数错误!</font>';exit();
}
switch($action){
case'zan'://点赞(给力)
//$zan_json是数组文件中设置的数组变量,存的是json数据----1
$zan_array=json_decode(str_replace("'",'"',$zan_json),true);
//获取当前的会员的uid-----2
$user_answer['uid']=$uid;
//获取对应的赞的回答的id----2
$user_answer['answer_id']=$_POST['answer_id'];
//将会员的uid和答案的id一块的数组放到指定的数组中----3
$zan_array[]=$user_answer;
$config_path='shuzu/ovovsys_zan.php';
if(!file_exists($config_path)){
$Base->ErrorMsg('文件错误:shuzu/ovovsys_zan.php不存在!');exit();
}
//将指定的数组转换成json数据,并且将双引号转换成单引号,不然放到数组文件中后会出错----4
$zan_new_json=str_replace('"',"'",json_encode($zan_array));
$fp=@fopen($config_path,'r+');
if(!$content=@fread($fp,filesize($config_path))){
$Base->ErrorMsg('无法读取shuzu/ovovsys_zan.php文件!');exit();
}
//执行替换,将数组文件中对应的json数据----5
$content=str_replace("$zan_json="{$zan_json}"","$zan_json="{$zan_new_json}"",$content);
$fp=@fopen($config_path,'w+');
@fwrite($fp,$content);
//修改对应的数据表中的数据----5
$Db->ThisQuery("update`".$db_prefix."ask_answers`set`goods`=`goods`+1where`ans_id`=".$user_answer['answer_id']."");
exit();
break;
case'cai'://踩(不给力)
$cai_array=json_decode(str_replace("'",'"',$cai_json),true);
$user_answer['uid']=$uid;
$user_answer['answer_id']=$_POST['answer_id'];
$cai_array[]=$user_answer;
$config_path='shuzu/ovovsys_zan.php';
if(!file_exists($config_path)){
$Base->ErrorMsg('文件错误:shuzu/ovovsys_zan.php不存在!');exit();
}
$cai_new_json=str_replace('"',"'",json_encode($cai_array));
$fp=@fopen($config_path,'r+');
if(!$content=@fread($fp,filesize($config_path))){
$Base->ErrorMsg('无法读取shuzu/ovovsys_zan.php文件!');exit();
}
$content=str_replace("$cai_json="{$cai_json}"","$cai_json="{$cai_new_json}"",$content);
$fp=@fopen($config_path,'w+');
@fwrite($fp,$content);
$Db->ThisQuery("update`".$db_prefix."ask_answers`set`bads`=`bads`-1where`ans_id`=".$user_answer['answer_id']."");
exit();
break;
}
?>
对应的数据文件(因为创建数据库时没有创建踩和赞的再断,所以这里就用php文件存变量的方式保存了一下答案对应的赞和踩的数据,其中包含用户的id和答案的id):
<?php
$zan_json="";
$cai_json="";
?>
你没看错,就是两个变量
Ⅳ thinkphp框架 文章的点赞+1和浏览数怎么做
用户点赞后,通过ajax把文章id传给控制器
控制器中操作数据库,把相应的点赞数加1
再在ajax回调中把页面中原来的点赞数加1
就OK了。
浏览数,每次用户访问页面的时候读取文章的浏览数,并加1
同时修改数据库。
Ⅵ 怎么利用ajax 和 js实现点赞功能
先引入jquery文件
然后点击事件比如说下面的html代码
<aclass="like"data-id="55">点我赞一个<spanclass="zan">99</span></a>
然后js代码
$(document).on("click",".like",function(){
vardataid=$(this).attr("data-id");
varurl='3tii.com/test/ajax.php?id='+dataid;
$.ajax({
url:url,
type:'get',
dataType:'json',
success:function(data){
$('.zan').html(data.html);
}
});
});
然后ajax.php文件,这个文件里面先获取id,然后根据id,update新"赞"那个字段,每点一次就+1,
然后再获取"赞"字段的值,就是总的赞了多少次,将结果存到数组里面,返回json数据,就是上面js的,data.html
ajax.php相关代码
//相关的sql语然,按照你自己的来,根据获取的id,update新"赞"那个字段,每点一次就+1
//然后再获取"赞"字段的最新值
$data=array(
"html"=>23//这里是获取到的赞的最新值
);
}
echojson_encode($data);
ok,就可以了.
Ⅶ tp框架文章点赞,用ajax+php,点赞失败且无增加,感觉是前端ajax哪里写错了
//控制器的setInc那一行代码改成:
$this->error($id);//先查看一下你获取的id是否正确,如果没有问题的话,这一行注释掉
if(M("Cession")->where(array('id'=>$id))->setInc("c_dz",1)){//前面的M()方法这里我直接调用了,第一个字母注意在大写,然后要判断返回值是否为真
$this->success();
}else{
$this->error(M("Cession")->getLastSql();)//如果更新失败,就看一下最后一句sql是否有问题,只在测试环境这样使用
}
//另外,js的success函数这样写:
success:function(data){
console.log(data);//先打印出后台返回的东西来看看
if(data.status==1){
$("#testtotal").text(parseInt(total)+1);//我看到你代码的这个地方是有问题的,你返回的就是total+1,你又再加了一个total,可以改成我这样,成功了,直接在原来的阅读数上加一,为了确保total是整数,我加了个parseInt()函数
}
}
Ⅷ 用thinkphp写商品收藏,要怎么写,之前写过tp+ajax点赞的,收藏在控制器那不会了
每次打开一个商品,查询收藏表是否存在收藏记录,查询用户id跟商品id,如果存在,收藏按钮不可点击。
每次点击收藏,用location.href="url?id=55";跳转过去,在控制器页面判断$_GET存在否,获取商品id和用户id,存到数据库。
完毕