用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3455|回复: 6
收起左侧

[已解决] onclick事件点击2次后才update数据库

[复制链接]
发表于 2012-2-17 21:58:17 | 显示全部楼层 |阅读模式
标签是
<a id="press-<?php echo $arr0['id']; ?>" href="javascript:void(0)"
    >顶</a>
<span id="<?php echo $arr0['id']; ?>"><?php echo $arr0['num']; ?></span>

js 是
function clicktop(sid,num) {
$(document).ready(function() {
  $("#press-"+sid).click(function() {
   $.ajax({
    type : "post",
    data : "id="+sid,
    url  : "/index.php/Add_Num/",
    async: true,
    success : function(result){
     alert('aaa');
    },
    error: function() {
     alert('bbb');
    }   
   });
  });
});
$("#"+sid).html(num+1);
}

现在是在点击 "顶" 字的时候,界面会更新,但是数据库中没有更新
每次更新都是+1
点击2次 "顶" 后,才更新进去
求解!!!
发表于 2012-2-17 22:25:54 | 显示全部楼层
本帖最后由 yuzhigang5460 于 2012-2-17 22:33 编辑

js代码太别致了。
这么写试试。
JS复制代码
$(document).ready(function(){
var sid = <?php echo $arr0['id'];?>;
$('#press-'+ sid).click(function(){
$.post('/index.php/add_Num/', {id: sid}, function(msg){$('#'+sid).html(msg);});
return false;
});
});
复制代码

msg为add_Num返回的值,新的顶的总数。
 楼主| 发表于 2012-2-18 09:04:43 | 显示全部楼层
yuzhigang5460 发表于 2012-2-17 22:25
js代码太别致了。
这么写试试。

这样写的话
那就没办法区分 id 了
我页面可能有多个id
所以是 onclick 的时候传进来的
然后在里面获取的
发表于 2012-2-18 09:29:31 | 显示全部楼层
lynn.wang 发表于 2012-2-18 09:04
这样写的话
那就没办法区分 id 了
我页面可能有多个id

这就的有点技巧了,主要是信息要传进来。你可以这么做:
HTML复制代码
<input type="hidden" name="sid" value="<?php echo $arr0['id']; ?>" />
<a  class="top-it" href="#"></a>
<span><?php echo $arr0['num']; ?></span>
复制代码

然后一切ok。
JS复制代码
 
$(document).ready(function(){
        $('.top-it').click(function(){
                var sid = $(this).prev().val();
                $.post('url',{sid: sid}, function(msg){});
                return false;
        });
});
 
复制代码


当然你也可以直接把sid信息存储在span中,如同你原来的那样
HTML复制代码
<span id="<?php echo $arr0['id']; ?>"><?php echo $arr0['num']; ?></span>
 
复制代码

然后sid的取法可以按照以下方式:
JS复制代码
$(document).ready(function(){
        $('.top-it').click(function(){
                var sid = $(this).next().attr('id');
                $.post('url',{sid: sid}, function(msg){});
                return false;
        });
});
复制代码


还有top-it里的href就不用些void(0)之类的,记住在click事件中return false就可以了,这可以阻止元素的默认行为。

你原来代码的问题在于没有找到存储数据的方法,一般来说使用hidden的input,绑到id上,或者其他自定义属性可解决数据传递到html页面的问题。

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2012-2-20 00:39:04 | 显示全部楼层
事件冒泡  检查代码
 楼主| 发表于 2012-2-20 13:18:57 | 显示全部楼层
3Q 该问题已经解决,粗心了一点
发表于 2012-2-20 18:44:24 | 显示全部楼层
<a  sid="<?php echo $arr0['id']; ?>" class="press" href="javascript:void(0)"
    >顶</a>
<span id="<?php echo $arr0['id']; ?>"><?php echo $arr0['num']; ?></span>

$(document).ready(function(){
   $('.press')click(function(){
       var sid = $(this).attr('sid');
       $.post('/index.php/add_Num/', {id: sid}, function(msg){$('#'+sid).html(msg);});
          return false;
       });
   })

});

本版积分规则