【问题标题】:PHP update database field without redirectingPHP更新数据库字段而不重定向
【发布时间】:2016-05-24 08:07:23
【问题描述】:

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

我当时所做的是创建一个在按下 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,它会重定向到链接或我的控制器想要的位置。我想要的是调用该方法,更新数据库,但没有重定向或其他什么。那可能吗 ?与阿贾克斯?我用 pushstate 尝试了一些东西,但它只是修改了 URL 而没有触发方法。

我在控制器中的方法:

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

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

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

【问题讨论】:

  • 你在使用 jquery 吗?
  • @RanjeetSingh jQuery 被标记。
  • 你可以在你的函数中发出一个ajax请求来保存数据。

标签: javascript php jquery database codeigniter


【解决方案1】:

检查此代码:-

<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: "json" 在 ajax 请求中。

【讨论】:

  • 我的快乐。快乐编码:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    相关资源
    最近更新 更多