2016-05-24 40 views
1

我正在使用PHP Codeigniter。我的網站上有一個側欄,顯示我在數據庫中的每項任務。在任務表中,我有一個文本列,我希望能夠在按下Enter鍵時進行更新。PHP更新數據庫字段不重定向

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

你使用jQuery嗎? –

+0

@RanjeetSingh jQuery已被標記。 – Albzi

+0

你可以在你的函數中做一個ajax請求來保存數據。 –

回答

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評論的dataType響應:在Ajax請求 「JSON」

+0

謝謝,它的工作,我學到了東西:) – Komarzer

+0

我的樂趣。快樂編碼:) –

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