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

用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)传过去,这个该怎么写?

我说一下我的思路:你给按钮添加一个自定义的属性,属性名可以是任意的,属性值为$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('投票失败');    //操作失败后执行的操作
                  }
             }
         })
     });
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-18
你可以定义个隐藏的文本数组,然后把id赋值给value就可以了
比如<input type="hidden" id="pid" name="id[]" value="{$vo.id}">
这样你就可以用ajax获取到id的值,并传递过去了追问

foreach遍历之后,出来许多个id为“pid”的input,怎么取得这个value呢?用$('#pid')肯定是不行的了吧。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网