繁体   English   中英

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

[英]PHP update database field without redirecting

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

我要用来更新的文本区域

我目前所做的是创建一个JavaScript函数,该函数在按Enter键时被调用:

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');
}

检查此代码:-

<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注释dataType: ajax请求中的“ json”

您将需要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]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM