i was try get count of records and return result number to ajax success function to print it or get the value on the textbox
the controller function is
public function get_subaccount_count($id){
$data = $this->accounts_model->get_count($id);
echo json_encode($data);
}
and the modle function
public function get_count($id){
$sql="SELECT COUNT(*) FROM $this->tablename";
$this->db->where('node_parent',$id);
return $this->db->count_all_results($this->tablename);
}
and the javascript in view is
<script>
$('#sub_account').change(function(){
var accountcode = document.getElementById("main_code").value;
var subaccount = document.getElementById("sub_account").value;
//-------- loop to get count of sub accounts and add sum 1 ------------
$.ajax({
type: 'GET',
url: "<?php echo base_url();?>index.php/accounts/get_subaccount_count/" $('#main_code').val(),
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
$('#account_code').empty();
$.each(result.result, function(){
$('#account_code').value = this[0];
})}
});
//-------- loop to get count of sub accounts and add sum 1 ------------
});
</script>
i want the $('#account_code').value = is the count result
CodePudding user response:
Your controller only needs to call the model method and print the returned integer.
public function get_subaccount_count(int $id): void
{
echo $this->accounts_model->get_count($id);
}
Your model doesn't benefit from the $sql
declaration.
public function get_count(int $id): int
{
return $this->db->where('node_parent',$id)->count_all_results($this->tablename);
}
Your ajax block only needs to assign the printed value to the desired HTML element.
$.ajax({
type: 'GET',
url: "<?php echo base_url();?>index.php/accounts/get_subaccount_count/" $('#main_code').val(),
success: function (response) {
$('#account_code').value = result;
}
});
Or use $.get
like this:
$.get("<?php echo base_url();?>index.php/accounts/get_subaccount_count/" $('#main_code').val(), function(result) {
$('#account_code').value = result;
});
CodePudding user response:
Change like this:
$.ajax({
type: 'GET',
url: "<?php echo base_url();?>index.php/accounts/get_subaccount_count/" $('#main_code').val(),
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
$('#account_code').empty();
var counter = 0; // this line
$.each(result.result, function(){
counter ; //this line
})}
$('#account_code').value = counter; // and this line
});