更新内容ajax中的错误

时间:2012-02-15 05:11:19

标签: php javascript ajax

我正在尝试为任务表单编写代码,以显示任务及其状态。这是我的表格。

enter image description here

如果我点击状态内容,系统会显示一个选择菜单,其中包含三个选项CompletedIn ProgressWaiting for client confirmation。如果我选择一个选项并按Enter键,它将在数据库中更新。如果状态更新为completed,则不会在click事件上显示选择框。我的问题是,如果我更新状态以完成,然后单击相同的状态,出现选择菜单。但如果我修改并刷新页面,它工作正常。我需要它才能正确刷新页面。

这是我的php代码

<?php
            if($fetchstatus == 'Completed'){
            echo 'Completed';
            }
            else{?>
            <span id="status"><?php echo $fetchstatus; ?></span>
            <select id="<?php echo $fetchtaskid; ?>" style="width:110px;">
            <option value="In progress">In progress</option>
            <option value="Completed">Completed</option>
            <option value="Waiting for client confirmation">Waiting for client confirmation</option>
            </select>
            <?php
            }
            ?>

这是我的ajax脚本

$(document).ready(function(){
        var eventFlag=false;
        var originalText='';
        $('.updatetask tr td span#status').click(function(e){
            e.stopImmediatePropagation();
            $(this).siblings().show().focus();
            $(this).hide();
            eventFlag=false;
            originalText=$(this).siblings().val();
        });

        $('.updatetask tr td select').blur(function(e){
            if(!eventFlag && validate($(this))) doAjax($(this));
            else
            {
                $(this).siblings().show();
                $(this).hide();
            }
        });

        $('.updatetask tr td select').keypress(function(e){
            e.stopImmediatePropagation();
            var code = (e.keyCode ? e.keyCode : e.which);
            if(code==13)
            {
                if(validate($(this)))
                {
                    doAjax($(this));
                    eventFlag=true;
                }
                else
                {
                    $(this).siblings().show();
                    $(this).hide();
                }
            }
        });

        function validate(input)
        {
            console.log(input.val()+" "+originalText);
            if(input.val()!='' && input.val()!=originalText)
            return true
            else return false;
        }

        function doAjax(input)
        {
            var formData="proId="+input.attr('id')+"&text="+input.val();
                $.ajax({
                    type: "POST",
                    url: "update_taskstatus.php",
                    data: formData,
                    success: function(data){
                        if(data==1) 
                        {
                            input.siblings().text(input.val()).show();
                            input.hide();
                            if(input.val()=='completed')
                            {
                                input.siblings().unbind('click');
                            }   
                        } 
                        else
                        {
                            input.siblings().show();
                            input.hide();
                            alert("something Wrong !");
                        }   
                    },
                    error:function (xhr, ajaxOptions, thrownError){
                        alert("Error:"+xhr.status+" "+thrownError);
                    }
                });
        }

    });

我该如何纠正?

1 个答案:

答案 0 :(得分:1)

因为你改变了我昨天给你的代码,所以我有点困惑,不知道我当前的代码是否会起作用,但是从我的猜测中尝试这个让我知道结果

if(data==1) 
{
    input.siblings().text(input.val()).show();
    input.hide();
    if(input.val()=='Completed')
    {
        input.siblings().unbind('click');
    }   
}

更改do ajax函数,只改变第一个if块,希望它足够清楚。