2016-05-24 22 views
1

私はPHP Codeigniterを使用しています。私のウェブサイトには、自分のデータベースにあるすべてのタスクを表示するサイドバーがあります。タスクテーブルには、Enterキーを押したときに更新できるようにしたいテキスト列があります。私は、現時点ではやったリダイレクトせずにPHPデータベースの更新フィールド

The textarea that I want to use to update

Enterキーを押したときに呼び出されるjavascript関数を作成することでした。私はwindow.location.hrefを使用している場合現時点で

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

を、それがにリダイレクトリンク、または私のコントローラがそれを望む場所。私が望むのは、メソッドを呼び出すこと、データベースを更新することですが、リダイレクトなどはしません。それは可能ですか? 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コメントのデータ型のご回答の場合: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]); 
} 
関連する問題