HealMee
HealMee

Reputation: 85

ajax send and get data to/from controller mvc

This is my script:

<script>
$(document).ready(function(){
    $("#ID_Blangko").on("change", function() {
        var blangko = $("#ID_Blangko").val();
        var baseUrl = '<?php echo base_url(); ?>program/administrasi/blangko_rusak/ajax_jumlah';
        $.ajax({
            url: baseUrl,
            data: {nama : blangko},
            dataType: "json",
            success: function(datas){
                $("#Jumlah_Blangko").val(datas);
            },
            error: function (xhr, ajaxOptions, thrownError) {
                $('#Jumlah_Blangko').val("some error.");
            }
        });
    });
});
</script>

and this is my controller code:

public function ajax_jumlah($nama)
{
    $this->db->select('Jumlah_Blangko');
    $this->db->where('Nama_Blangko', $nama);
    $result = $this->db->get('tb_blangko');
    $amount = $result->row()->Jumlah_Blangko;
    return json_encode($amount, JSON_NUMERIC_CHECK);
}

i've double checked the onchange function and controller function is working well and returning value. The problem is I cant pass this value to my ajax code and print it on input form. Here's my html:

<?php echo form_open($form_action, array('id'=>'myform', 'class'=>'myform', 'role'=>'form')) ?>
   <div class="row">
       <div class="col-md-6">
           <?php
                $atribut_blangko = 'class="form-control" id="ID_Blangko"';
                $selectedBlangko = $values->ID_Blangko;
                echo form_dropdown('ID_Blangko', $dropdown_Blangko, $selectedBlangko, $atribut_blangko);
            ?>
        </div>

        <div class="col-md-6">
            <?php echo form_input('Jumlah_Blangko', '', 'id="Jumlah_Blangko" class="form-control" placeholder="Jumlah" maxlength="50" readonly="true"') ?>
        </div>
   </div>
<?php echo form_close() ?>

update #2 and this solve my problem
this the controller function im accessing directly from browser URL that is http://localhost/amc/program/administrasi/blangko_rusak/ajax_jumlah/Malaysia
and i found out that
return json_encode($amount, JSON_NUMERIC_CHECK); this doesnt work and then i changed to:
echo json_encode($amount, JSON_NUMERIC_CHECK); this work.
I dont know how this is possible, anyone can explain?

Upvotes: 0

Views: 621

Answers (2)

phreakv6
phreakv6

Reputation: 2165

I think

var blangko = ID_Blangko.value;

should be

var blangko = $('#ID_Blangko').val();

or

var blangko = $(this).val();

EDIT

Your problem with controller/action not seeing the variable could be because it expects params instead of query string vars like most frameworks do. Something like this could help you with that

        var baseUrl = '<?php echo base_url(); ?>program/administrasi/blangko_rusak/ajax_jumlah/' + blangko;

Upvotes: 1

Naga Srinu Kapusetti
Naga Srinu Kapusetti

Reputation: 1611

Please check the line no 3 in your code it should be "$("#ID_Blangko").val()" instead of "$("#ID_Blangko").val"

Explanation:

in the above code line you were expecting to get the value of the element having id "ID_Blangko" and you are using the jQuery, but the main thing here is that the "val" is a function and not a variable so you can not access the value by just saying "$("#ID_Blangko").val" because it looks for a property named as 'val'

Upvotes: 1

Related Questions