2017-02-04 11 views
0

CodeIgniterが新機能です.AJAXを使用してMySQL-DBフィールドを更新する際に問題があります。 AJAXコードはデータベースを更新しませんでしたが、success属性(私は名前について混同しています)をjson_encodeを使用して指定しませんでした。 私は何度も試してみましたが、私がモデルを使用しなかったとき、私はコントローラ内で直接実行されるクエリを動かし、うまくいきました。データベースは更新されました。しかし、私はそれが悪い考えだと思った。ここでモデルクエリを使用しているときにCodeigniterがAjax-json_encodeを使用できない

は私のコントローラの機能です:

public function applicant_is_present(){ 
    $data = array(
      'idplm'=>$this->input->post('idplm') 
      ); 

    $this->applicant_model->give_attendance($data); 
    echo json_encode(array("status" => TRUE)); 
} 

ここに私のモデル関数です:

function give_attendance($applicant){ 
    $query = 'UPDATE apptable SET khdrp = \'present\' WHERE idplm = '.$applicant->idplm.' '; 
    $this->db->query($query); 
} 

は、ここに私の見解です:

<!DOCTYPE html> 
<link rel="stylesheet" href="<?php echo base_url("assets/css/bootstrap.css"); ?>" /> 
<html> 
    <head> 
    <script type="text/javascript" src="<?php echo base_url("assets/js/jquery-3.1.1.js"); ?>"></script> 
    <script type="text/javascript" src="<?php echo base_url("assets/js/bootstrap.js"); ?>"></script> 

    <script type="text/javascript"> 
    function attends(id){ 

    var url; 

    url = "<?php echo site_url('applicant/applicant_is_present')?>"; 

    $.ajax({ 
     url : url, 
     type: "POST", 
     data: {idplm: id}, 
     dataType: "JSON", 
     success: function(data){ 

      if(data.status){ 
      jQuery("div#beginning_response").show(); 
      }else{ 
      for (var i = 0; i < data.inputerror.length; i++){ 
       $('[name="'+data.inputerror[i]+'"]').parent().parent().addClass('has-error'); $('[name="'+data.inputerror[i]+'"]').next().text(data.error_string[i]); 
      } 
     } 

    }, 
    error: function (jqXHR, textStatus, errorThrown){ 
     alert('Error adding/update data'); 
     } 
    }); 
} 
</script> 
</head> 
<body> 
     . 
     . 
     //some codes to print $that_applicant object 
     . 
     . 
    <div id = "beginning_response" style='display: none'> 
      Present! 
    </div> 
    Applicant's Presence : 
      //this is the button to call the script 
      <a class="btn btn-sm btn-primary" href="javascript:void(0)" title="update" onclick="attends('<?php echo $that_applicant->idplm; ?>')">Present</a> 
      <br/> 
      <br/> 
+0

試して、このスクリプトを使用することができ、CodeIgniterの更新方法で構築使用することができます> applicant_model-> give_attendance($ data); 'この行とajax succssを取得するかどうかを確認します。 –

+0

はい、私はajaxの成功を得ましたが、行がなければ、どのようにデータベースを更新しますか? –

+0

あなたはあなたのコードをエラーにしました。エラーを表示するには、エラーを有効にする必要があります。 '$ data'を' give_attendance'関数に配列として送信しますが、 '$ applicant-> idplm'オブジェクトとして使用しています。それはあなたにエラーを与えています。 '$ applicant ['idplm']' –

答えて

0

あなたはアヤックスで送信されたJSONデータにアクセスする必要がありますこのようなあなたのコントローラーでのリクエスト:

$data = file_get_contents("php://input"); 

これは、リクエストで送信された生データを取得します。 json_decodeを使用してPHP配列に変換できます。スクリプトはこの

$res = $this->db->update('apptable', array('khdrp' => 'present'), array('idplm' => $applicant['idplm'])); 
return $res; /* return boolean data */ 

ようになるので

0

たぶん、あなたは次にあなたが `ます$ this-せずに、あなたのコントローラ上

if($this->applicant_model->give_attendance($data)){ 
    echo '{"status": "success"}'; 
} 
+0

と同じ問題に直面している:/ –

関連する問題