默认情况下,DataTables v.1.9.4 会阻止请求缓存fnServerData
功能、注意事项"cache": false
下面摘录自 DataTables 源代码。
"fnServerData": function ( sUrl, aoData, fnCallback, oSettings ) {
oSettings.jqXHR = $.ajax( {
"url": sUrl,
"data": aoData,
"success": function (json) {
if ( json.sError ) {
oSettings.oApi._fnLog( oSettings, 0, json.sError );
}
$(oSettings.oInstance).trigger('xhr', [oSettings, json]);
fnCallback( json );
},
"dataType": "json",
"cache": false,
"type": oSettings.sServerMethod,
"error": function (xhr, error, thrown) {
if ( error == "parsererror" ) {
oSettings.oApi._fnLog( oSettings, 0, "DataTables warning: JSON data from "+
"server could not be parsed. This is caused by a JSON formatting error." );
}
}
} );
}
但是在你的代码中你重写了fnServerData
并使用$.getJSON()
这是一个简写函数$.ajax() http://api.jquery.com/jQuery.ajax/没有指定cache
选项。默认值cache
选项是true
,这就是您的请求被缓存的原因。
以下是 jQuery 手册的摘录:
cache
(默认:true
, false
for dataType
'script'
and 'jsonp'
)
类型:布尔值
如果设置为false
,它将强制请求的页面不被
由浏览器缓存。注:设置cache
to false
只会起作用
正确处理 HEAD 和 GET 请求。它的工作原理是附加
“_={timestamp}” 到 GET 参数。不需要该参数
其他类型的请求,除了在 IE8 中对 URL 进行 POST 时
已通过 GET 请求。