为什么我在使用onclick事件时会重复显示重复值?

时间:2012-09-11 08:00:49

标签: php jquery

这里是我的js脚本

<script>
    function displayWarriors() {
        $.ajax({
            url: "display_warriors.php",
            success: function(data) {
                $("#tableWarrior").append(data);
            }
        });
        return false;
    }
    function createWarrior() {
        $.post( "create_warrior.php", { 
        "wname": $("#txtWname").val(),
        "wtype": $("#txtWtype").val()           
        }, 
        function(msg){
            displayWarriors();
        });
        return false;
    }
</script>

我在从事件中触发函数时使用这行html代码

<input onclick="return createWarrior()"

例如我在桌子上显示No.1 Name1,然后我添加了另一个名称2

我的输出

No.1 Name1
No.1 Name1
No.2 Name2

如何解决此问题

我的display_warriors.php

foreach($stmt as $warrior){
        echo '<tr><td>'.$warrior['warrior_id'].'</td><td><a href="selected.php?id='.$warrior['warrior_id'].'">'.$warrior['warrior_name'].'</a></td><td>'.$warrior['warrior_type'].'</td></tr>';
    }

1 个答案:

答案 0 :(得分:3)

重复即将到来,因为你总是返回所有数据,其中一些已经存在于'tableWarrior'元素中,你应该更改语句

success: function(data) {
       $("#tableWarrior").append(data);
}

success: function(data) {
       $("#tableWarrior").empty();
       $("#tableWarrior").append(data);
}

你应该改变

<script>
    function displayWarriors(wname, wtype) {
        $.ajax({
            url: "display_warriors.php",
            data: { name: wname, type: wtype},
            success: function(data) {
                $("#tableWarrior").append(data);
            }
        });
        return false;
    }
    function createWarrior() {
        var name =  $("#txtWname").val(),
        var type =  $("#txtWtype").val()   

        $.post( "create_warrior.php", { 
        "wname": name,
        "wtype": type           
        }, 
        function(msg){
            displayWarriors(name, type);
        });
        return false;
    }
</script>

和你的display_warrior.php应该返回一个warrior tr。像

$name = $_REQUEST["name"];
$type = $_REQUEST["type"]
$warrior = GetYourWarriorWithItsNameAndType($name, $type);//Call a funciton here to get the warrior from its name and type.

echo '<tr><td>'.$warrior['warrior_id'].'</td><td><a href="selected.php?id='.$warrior['warrior_id'].'">'.$warrior['warrior_name'].'</a></td><td>'.$warrior['warrior_type'].'</td></tr>';