2016-10-26 5 views
0

私は確認した後に行を追加できる関数を作っています。問題は、ボタンを送信した後、表がリロードされず、エラー機能alert.actuallyデータの成功が保存されていると私はテーブルをリロードできるようにページを更新する必要があります。ここに私のAjaxのjqueryのコードは次のとおりです。関数の保存ajaxエラー

function reloadPage() 
 
    { 
 
    window.location.reload() 
 
    } 
 

 
function save() 
 
{ 
 
    $('#btnSave').text('saving...'); //change button text 
 
    $('#btnSave').attr('disabled',true); //set button disable 
 
    var url; 
 
    
 
    if(save_method == 'add') { 
 
     url = "<?php echo site_url('activity/save')?>"; 
 
    } else { 
 
     url = "<?php echo site_url('activity/update_activity')?>"; 
 
    } 
 

 
    
 
    // ajax adding data to database 
 
    $.ajax({ 
 
     url : url, 
 
     type: "POST", 
 
     data: $('#form-input').serialize(), 
 
     dataType: "JSON", 
 
     success: function(data) 
 
     { 
 
    
 
      
 
      $('#myModal').modal('hide'); 
 
      reloadPage(); 
 
$('#btnSave').text('save'); //change button text 
 
     $('#btnSave').attr('disabled',false); //set button enable 
 

 

 
    }, 
 
    error: function (jqXHR, textStatus, errorThrown) 
 
    { 
 
     alert('Error adding/update data'); 
 
     $('#btnSave').text('save'); //change button text 
 
     $('#btnSave').attr('disabled',false); //set button enable 
 

 
    } 
 
}); 
 
}
<button id="btnSave" onclick="save()" class="btn green"> 
 
"fa fa-save"> save</button>

私のコントローラ:

public function save() { 
 
     $actype  \t = $this->input->post('actype'); 
 
     $activity_name \t = $this->input->post('activity_name'); 
 
     $project \t = $this->input->post('project'); 
 
     $portion \t = $this->input->post('portion'); 
 
     $activity \t = $this->input->post('actid'); 
 
    
 

 
     $data = array(
 
     \t 'activity_type_id'=>$actype, 
 
\t \t 'activity_name' \t =>$activity_name, 
 
\t \t 'project_id' \t =>$project, 
 
\t \t 'portion' \t =>$portion, 
 
\t \t 'activity_id' \t => $activity 
 
      
 
     ); 
 
     $this->activity->insertactivity($data); 
 
    
 
     redirect("activity/input"); 
 
    }
私はボタンが保存クリックした後

、警告( 'エラーが追加します/データを更新する)、実際にはリロード後にページデータが保存されます。 私のajaxコードのどこにコードエラーがありますか?

+0

を「結果」を確認することができます?コントローラとスクリプトで? –

+0

はい、その時代かどうか? –

+0

私は間違っていると思う。なぜあなたは同じ機能(保存)と1つのボタンで2つの機能が必要ですか? –

答えて

0

強制的にサーバーからリロードします。

window.location.reload(true); 

あなたがtrueを指定しないリロードが可能な場合は、ブラウザのキャッシュからのものであってもよいです。

またコントローラでは、redirect("activity/input");はAJAX要求に対する適切な応答ではありません。代わりにこのようなものを試してみてください。

$this->activity->insertactivity($data); 
echo json_encode(array('result' => TRUE)); 

コントローラコードは、さらに簡潔にすることもできます。この

public function save() 
{ 
    $data = array(
      'activity_type_id' => $this->input->post('actype'), 
      'activity_name' => $this->input->post('activity_name'), 
      'project_id' => $this->input->post('project'), 
      'portion' => $this->input->post('portion'), 
      'activity_id' => $this->input->post('actid') 
    ); 

    //Assuming insertactivity returns TRUE if the insert works and FALSE if not 
    $results['result'] = $this->activity->insertactivity($data); 
    echo json_encode($results); 
} 

を考えてみましょうあなたは2つのセーブ機能を持って成功機能に

success: function(data) 
{ 
    if(data.result === true) 
    { 
    $('#myModal').modal('hide'); 
    reloadPage(); 
    $('#btnSave').text('save'); //change button text 
    $('#btnSave').attr('disabled',false); //set button enable 
    } else { 
    //do something to the DOM to tell about the problem 
    //which probably means you should add that to your controller's response. 
    } 
}, 
関連する問題