lynn.wang 发表于 2012-2-17 21:58:17

onclick事件点击2次后才update数据库

标签是
<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次 "顶" 后,才更新进去
求解!!!

yuzhigang5460 发表于 2012-2-17 22:25:54

本帖最后由 yuzhigang5460 于 2012-2-17 22:33 编辑

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返回的值,新的顶的总数。

lynn.wang 发表于 2012-2-18 09:04:43

yuzhigang5460 发表于 2012-2-17 22:25 static/image/common/back.gif
js代码太别致了。
这么写试试。



这样写的话
那就没办法区分 id 了
我页面可能有多个id
所以是 onclick 的时候传进来的
然后在里面获取的

yuzhigang5460 发表于 2012-2-18 09:29:31

lynn.wang 发表于 2012-2-18 09:04 static/image/common/back.gif
这样写的话
那就没办法区分 id 了
我页面可能有多个id


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

$(document).ready(function(){
        $('.top-it').click(function(){
                var sid = $(this).prev().val();
                $.post('url',{sid: sid}, function(msg){});
                return false;
        });
});


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

然后sid的取法可以按照以下方式:
$(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页面的问题。

zjqyyf 发表于 2012-2-20 00:39:04

事件冒泡检查代码

lynn.wang 发表于 2012-2-20 13:18:57

3Q 该问题已经解决,粗心了一点

CIadmin 发表于 2012-2-20 18:44:24

<asid="<?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;
       });
   })

});
页: [1]
查看完整版本: onclick事件点击2次后才update数据库