Ⅰ 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,存到資料庫。
完畢