jquery Ajax 调用 Codeigniter 控制器

Posted

技术标签:

【中文标题】jquery Ajax 调用 Codeigniter 控制器【英文标题】:jquery Ajax call Codeigniter Controller 【发布时间】:2015-01-17 20:03:22 【问题描述】:

在我的视图页面中像这样调用 jquery Ajax

onclick: function() 
                        $.ajax(
                            type:'POST',
                            url:"<?php echo base_url('trand/report/checking'); ?>",
                            data: nm:'vnky',
                            success: function()
                                  alert("success");
                              ,
                              error: function()
                                alert("error");
                              
                        );
                        chart2.exportChart(
                            type: 'image/png', 
                            filename: dynmicfilename
                        );

                    

exportchart 功能完美运行。在 ajax 调用内部也可以很好地发出警报,但 url 没有被执行,通过在新选项卡中单击 url 时使用 firebug ,然后它工作正常。

如何在 ajax 调用中执行 url。你能帮忙吗?

【问题讨论】:

【参考方案1】:

这是我的代码。我的控制器返回json数据

$('.edit').click(function() 
    $.ajax(
        url: '<?php echo site_url('your_controller'); ?>',
        type: 'POST',
        data: 
            key: value
        ,
        dataType: 'json',
        success: function(data) 
            console.log(data);
        
    );
);

在 Ajax 调用中,哪个警报显示成功错误? 我认为您的 JS 代码是正确的。你应该检查你的控制器。如果你在浏览器中打开它并且它工作正常。您应该检查 csrf_protection 配置是 TRUE 还是 FALSE

【讨论】:

我的控制器也很好。当我在浏览器中打开它工作正常。配置中的 csrf_protection 我现在更改为 TRUE,但同样的问题 url 问题。 @Minh Quy 打开这个文件application/config/config.php,找到这个值csrf_protection。如果csrf_protection = TRUE,则应将其更改为FALSE 启用 csrf 保护后,对于每个 POST 请求,CI 都会检查表单数据中的 csrf 令牌。您使用 Ajax 发出 POST 请求并缺少此令牌 是的,它的默认值为 False。我现在改为 False。但我仍然遇到 url 问题。 ajax 函数执行但 url 没有执行 哦。那么显示的是哪个警报?成功还是错误?打开 Firebug 并查看 http 代码?【参考方案2】:

function generate_dateOfBirth()


    $data = $this->input->post('data', TRUE);

    if (!empty($data))
    

        // Check if the ID Number supplied is not less than 13 characters
        if ( strlen(trim($data)) == 13)
        
            $year = substr($data, 0, 2);
            $month = substr($data, 7, 2);
            $day = substr($data, 4, 2);

            $dateOfBirth = $year .'/'. $month .'/'. $day ;

            echo $dateOfBirth;
        
        else
        
            echo 'You have entered Invalid ID number above';
        

    
 

$('#id_number').on('change', function()
        
            var dob = $(this).val(); 

            $.ajax(

                    url: '/generate_date',
                    method: 'POST',
                    data: 'data=' + dob,
                    cache: false,
                    type: 'json',
                    success:function(data)
                      //update Increase month
                      $('#dob').val(data);
                    

            ); //End of ajax call

        ); $route['generate_data'] = 'Controller Name/function in the controller doesn"t contain html';

【讨论】:

以上是关于jquery Ajax 调用 Codeigniter 控制器的主要内容,如果未能解决你的问题,请参考以下文章

jquery中的多个ajax调用

Ajax 调用失败。使用 Jquery .ajax 函数发出简单的请求

jQuery.ajax() 成功/失败回调何时调用?

ajax调用后Jquery事件不会触发

如何在jquery中停止Ajax调用[重复]

如何使用 AJAX/JQuery 调用多个 PHP 脚本?