默认情况下,DataTables v.1.9.4 禁止在 fnServerData 函数中缓存请求,请注意以下 DataTables 源代码摘录中的 "cache": false。
"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() 的简写函数,但未指定 cache 选项。 cache 选项的默认值是 true,这就是您的请求被缓存的原因。
以下是 jQuery 手册的摘录:
cache(默认:true,false,dataType'script' 和 'jsonp')
类型:布尔值
如果设置为false,它将强制请求的页面不被
被浏览器缓存。注意:将cache 设置为false 只会起作用
正确使用 HEAD 和 GET 请求。它通过附加来工作
"_={timestamp}" 到 GET 参数。该参数不需要
其他类型的请求,IE8 中对 URL 进行 POST 时除外
已被 GET 请求。