thinkphp模板输出中的按钮添加动作

用thinkphp输出模板之后,怎么为其中的按钮添加动作呢?<foreachname="photo"item="v"><h1><p>{$v.id}</p><span>{$... 用thinkphp输出模板之后,怎么为其中的按钮添加动作呢?
<foreach name="photo" item="v">
<h1><p>{$v.id}</p><span>{$v.name}</span></h1>
<img src="__PUBLIC__/images/QQ/1.jpg" width="500" height="475" alt={$.name} />
<input class="vote" type="button" name="投票" value="投票"/>
</foreach>
在js中怎么写,ajax传数据的时候,需要把图片id(亦即$v.id)传过去,这个该怎么写?
展开
 我来答
yimengshixin
推荐于2016-08-17 · TA获得超过224个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:98.1万
展开全部

我说一下我的思路:你给按钮添加一个自定义的属性,属性名可以是任意的,属性值为$v.id,然后在点击这个按钮时,取得该按钮的这个自定义 的属性的值,把它递给后端PHP来处理就行了,那直接上代码了,用的是JQuery来实现的:

模板文件:

    <foreach name="photo" item="v"> 
            <h1><p>{$v.id}</p><span>{$v.name}</span></h1>
            <img src="__PUBLIC__/images/QQ/1.jpg" width="500" height="475" alt={$.name} />     
           <input class="vote" type="button" name="投票" value="投票" data-vid="<{$v.id}>"/>
    </foreach>

js部分:

$(function(){
     $(".vote").click(function(){
         var vid = $(this).attr("data-vid");    //取得按钮自定义属性的值
         $.ajax({
             url:'index.php/vote/add',           //根据自己的地址来替换
             type:"post",
             data:{vid:vid},
             dataType:"json",
             success:function(res){
                  if(res.status == 1)
                  {
                     alert('投票成功!');   //操作成功后执行的操作
                  }
                  else{
                      alert('投票失败');    //操作失败后执行的操作
                  }
             }
         })
     });
}



php部分:

class VoteAction extends Action
{

         function add()
         {
              $vid = $_POST['vid'];
              //执行的数据库操作,根据自己的来,并返回一个结果
              $res = M('Votes')->where(array('id'=>$vid))->setInc('votes',1);
              $status = 0;
              $msg = '投票失败';
              if($res)
              {
                  $status = 1;
                  $msg = '投票成功';
              }
              $data = array('status'=>$status, 'msg'=>$msg);
              $this->ajaxReturn($data);
         }
}
追问
如果我在模板文件中加入
得票数:{$v.votes}

在ajax之后,想要更新这个数值,js中该怎么写呢?
追答
$(function(){
     $(".vote").not(".disabled").click(function(){
         var vid = $(this).attr("data-vid");    //取得按钮自定义属性的值
         $.ajax({
             url:'index.php/vote/add',           //根据自己的地址来替换
             type:"post",
             data:{vid:vid},
             dataType:"json",
             success:function(res){
                  if(res.status == 1)
                  {
                     vid++;
                     $(this).next("p").find("span.votespan").text(vid);  //把显示票数的地方显示最新的票数
                     $(this).addClass("disabled");   //将按钮添加一个样式,让其不可用。
                  }
                  else{
                      alert('投票失败');    //操作失败后执行的操作
                  }
             }
         })
     });
}
伟少love静静
2013-12-18 · TA获得超过205个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:317万
展开全部
你可以定义个隐藏的文本数组,然后把id赋值给value就可以了
比如<input type="hidden" id="pid" name="id[]" value="{$vo.id}">
这样你就可以用ajax获取到id的值,并传递过去了
追问
foreach遍历之后,出来许多个id为“pid”的input,怎么取得这个value呢?用$('#pid')肯定是不行的了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式