PHP更新数据库字段,无需重定向

时间:2016-05-24 08:07:23

标签: javascript php jquery database codeigniter

我正在使用PHP Codeigniter。我的网站上有一个侧边栏,显示我在数据库中的每个任务。在任务表中,我有一个文本列,我希望能够在按Enter键时更新。

The textarea that I want to use to update

我目前所做的是创建一个按下Enter键时调用的javascript函数:

function CursorKeyDown(e, id){
    if(e.keyCode === 13){
        var text = document.getElementById('area').value;
        window.location.href = "<?php echo site_url('task/Task/validSuivi/')?>" + '/' + id + '/' + text;
        //window.history.pushState('', '', "<?php echo site_url('task/Task/validSuivi/')?>" + '/' + id + '/' + text);
        //alert("Enter was pressed was presses");
    }

    return false;
}

目前,如果我使用window.location.href,它会重定向到链接或我的控制器想要的位置。我想要的是调用方法,更新数据库,但没有重定向或其他。那可能吗 ?用Ajax?我尝试使用pushstate,但它只是在不触发方法的情况下修改了URL。

我在控制器中的方法:

public function validSuivi($id_tache, $text)
{
    $arr['suivi'] = $text;

    $this->task_model->update(array('id_tache'=>$id_tache),$arr);

    //redirect('task/task');
}

2 个答案:

答案 0 :(得分:2)

检查此代码: -

<script>
function CursorKeyDown(e, id){
    if(e.keyCode === 13){
        var text = document.getElementById('area').value;
        var ajax_url = "<?php echo site_url('task/Task/validSuivi/');?>" + '/' + id + '/' + text
        $.ajax({
            url: ajax_url,
            type: "POST",
            dataType: "json",
            data: {},
            success: function (result) {
                console.log('get your response..');
                console.log(result);
            },
            error: function(a,b,c) {
                console.log('error');
            },
            beforeSend:function(jqXHR, plain_jqXHR) {
                console.log('show some loading..');
                console.log('disable button..');
            },
            complete: function() {
                console.log('hide loading..');
                console.log('enable button..');
            }
        }); 
    }
    return false;
}

</script>

如果您的回复不是 json 在ajax请求中评论 dataType:“json”

答案 1 :(得分:0)

你需要ajax来做到这一点:),这段代码应该有效:

<强>的Javascript

function CursorKeyDown(e, id){
    if(e.keyCode === 13){
        var text = document.getElementById('area').value;
        $.get("<?php echo site_url('task/Task/validSuivi/')?>" + '/' + id + '/' + text, function() {
            alert("Enter was pressed was presses and saved to database");
        })
    }

    return false;
}

不要忘记在控制器上发送响应,例如,返回错误:如果记录成功更新则返回true,否则返回false:

<强> PHP

public function validSuivi($id_tache, $text)
{
    $arr['suivi'] = $text;

    $this->task_model->update(array('id_tache'=>$id_tache),$arr);

    header('Content-Type: application/json');
    echo json_encode(['error' => false]);
}