![](/img/trans.png)
[英]How can i update a field / post a form without redirecting or reloading a page?
[英]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.