我正在使用PHP Codeigniter。我的网站上有一个侧边栏,显示我在数据库中的每个任务。在任务表中,我有一个文本列,我希望能够在按Enter键时更新。
我目前所做的是创建一个按下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');
}
答案 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]);
}