AJAX 调用似乎从未发生过

Posted

技术标签:

【中文标题】AJAX 调用似乎从未发生过【英文标题】:AJAX call doesnt appear to ever take place 【发布时间】:2014-08-09 06:25:47 【问题描述】:

我正在尝试将 ajax 与 jQuery 数据表结合用于动态表,问题是,sAjaxSource 参数没有发出发布请求(我通常使用 chromes 网络工具来检查标题和响应代码,我希望有一个带有响应的 POST 方法)。脚本正在加载,控制台中的 jquery 也没有错误。我怎样才能让这个 ajax 调用发生?

下面是表格的jquery:

$(document).ready(function()

$('#datatable-courses').dataTable(

    "bJQueryUI": true,
    "bAutoWidth": false, // disable auto width calculation
    "sPaginationType": "full_numbers",
    "sDom": 'T<"clear">lfrtip',

    "bProcessing": true,
    "bServerSide": true,
    "sServerMethod":"POST",
    "sAjaxSource": "admin/courses/ajax_get_courses",
    "iDisplayLength": 10,
    "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
    "aLengthMenu": [[10, 25, 50, 100, 500, 1000], [10, 25, 50, 100, 500, 1000]],
    "aaSorting": [[0, 'asc']],
    "aaSorting": [], // sorting off initially
    "aoColumns": [
         "bVisible": true, "bSearchable": true, "bSortable": true, "sWidth": "60px" ,
         "bVisible": true, "bSearchable": true, "bSortable": true, "sWidth": "250px" ,
         "bVisible": true, "bSearchable": true, "bSortable": true, "sWidth": "70px" ,
         "bVisible": true, "bSearchable": true, "bSortable": true, "sWidth": "70px",


        
    ],

    "fnServerParams": function ( aoData ) 
        aoData.push(  "name": "my_csrf_name", "value": $.cookie('my_csrf_cookie')  );
    
).fnSetFilteringDelay(700);

看看我的控制器,虽然我怀疑问题出在这里:

 public function ajax_get_courses()

    if ( ! $this->input->is_ajax_request() || ! is_server_request_method('POST')) 
        return FALSE;
    

    $this->load->model('courses_model');

    $data = $this->courses_model->ajax_get_courses();

    echo $data;
    flush();
    exit();


附加信息:

使用jquery Datatables 0.7,codeigniter

csrf 令牌的 config var 设置为 true。

【问题讨论】:

【参考方案1】:

您是否尝试在 sAjaxSource 中添加整个 URL 为

http://example.com/admin/courses/ajax_get_courses

【讨论】:

【参考方案2】:

使用此方法发送 CSRF 令牌:

"fnServerParams": function ( aoData ) 
    aoData.push(  "name": "csrf_test_name", "value": $.cookie('csrf_cookie_name')  );
,

注意:不要忘记在页面的页眉或页脚中包含 jquery.cookie.js

【讨论】:

如果您能解释令牌如何解决 sAjaxSource 的问题,将会很有帮助

以上是关于AJAX 调用似乎从未发生过的主要内容,如果未能解决你的问题,请参考以下文章

iOS startUpdatingLocation 从未调用过

onLocationChanged 从未调用过?

CoreAudio AudioQueue 回调函数从未调用过,没有报错

PhoneGap 插件:从未调用过 AudioEncode 成功回调

发出 Qt 信号但从未调用过插槽

Win32 ListBox WNDPROC 从未调用过