weixin_33682719 2016-10-26 02:28
浏览 11

功能保存ajax错误

i have made function where i can add a row after confirming. the problem is, after submit button, the tables dont reload and show error function alert.actually data success saved and i have to refresh the page so that the table can reload. here is my ajax jquery code:

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>

my controller:

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

        $data = array(
            'activity_type_id'=>$actype,
        'activity_name' =>$activity_name,
        'project_id'    =>$project,
        'portion'   =>$portion,
        'activity_id'   => $activity
            
        );
        $this->activity->insertactivity($data);
 
       redirect("activity/input");
    }

after i've clicked button save,alert('Error adding / update data'),but actually after reload page data has saved. where is code error in my ajax code?

</div>
  • 写回答

1条回答 默认 最新

  • elliott.david 2016-10-26 13:56
    关注

    Force a reload from the server.

    window.location.reload(true);
    

    When you don't specify true the reload may be from the browser cache if available.

    Also, in the controller, redirect("activity/input"); is not the appropriate response to an AJAX request. Try something like this instead.

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

    Your controller code could also be much more concise. Consider this

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

    You can check the "result" in success function

    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.
      }
    },
    
    评论

报告相同问题?