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 从未调用过
CoreAudio AudioQueue 回调函数从未调用过,没有报错