ajax向/从控制器发送数据mvc

时间:2016-06-05 17:41:54

标签: javascript php jquery ajax codeigniter

这是我的剧本:

<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>

这是我的控制器代码:

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

我已经仔细检查了onchange功能,并且控制器功能运行良好且返回值。问题是我无法将此值传递给我的ajax代码并将其打印在输入表单上。这是我的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() ?>

更新#2 ,这解决了我的问题 这个控制器功能我直接从http://localhost/amc/program/administrasi/blangko_rusak/ajax_jumlah/Malaysia的浏览器URL访问 我发现了 return json_encode($amount, JSON_NUMERIC_CHECK);这不起作用然后我改为:
echo json_encode($amount, JSON_NUMERIC_CHECK);这项工作 我不知道这是怎么可能的,任何人都可以解释一下?

2 个答案:

答案 0 :(得分:1)

我认为

var blangko = ID_Blangko.value;

应该是

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

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

修改

控制器/操作没有看到变量的问题可能是因为它期望params而不是像大多数框架那样的查询字符串变量。这样的事情可以帮助你

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

答案 1 :(得分:1)

请检查代码中的第3行,它应该是“$(”#ID_Blangko“)。val()”而不是“$(”#ID_Blangko“)。val”

<强>解释

在上面的代码行中你期望获得id为“ID_Blangko”的元素的值并且你正在使用jQuery,但这里的主要内容是“val”是一个函数而不是变量所以你只能通过说“$(”#ID_Blangko“)。val”来访问该值,因为它查找名为'val'的属性