По умолчанию эта функция работает с $_GET
. На основании on this discussion я изменил this function и получил что-то вроде ниже. Теперь проблема, Firebug дает сообщение об ошибкеОбработка на стороне сервера с конвейерной обработкой
json.aaData is undefined @ line 99
Вот линия (находится в конце кода):
json.aaData.splice(0, iRequestStart-oCache.iCacheLower);
PHP сторона отвечает, и эта таблица работает 100% без конвейеризации. Но когда я включаю конвейерную получаю эту ошибку:
http://screencast.com/t/GOJzPHq3kg
function fnDataTablesPipeline (sSource, aoData, fnCallback) {
var iPipe = 5; /* Ajust the pipe size */
var bNeedServer = false;
var sEcho = fnGetKey(aoData, "sEcho");
var iRequestStart = fnGetKey(aoData, "iDisplayStart");
var iRequestLength = fnGetKey(aoData, "iDisplayLength");
var iRequestEnd = iRequestStart + iRequestLength;
oCache.iDisplayStart = iRequestStart;
/* outside pipeline? */
if (oCache.iCacheLower < 0 || iRequestStart < oCache.iCacheLower || iRequestEnd > oCache.iCacheUpper)
{
bNeedServer = true;
}
/* sorting etc changed? */
if (oCache.lastRequest && !bNeedServer)
{
for(var i=0, iLen=aoData.length ; i<iLen ; i++)
{
if (aoData[i].name != "iDisplayStart" && aoData[i].name != "iDisplayLength" && aoData[i].name != "sEcho")
{
if (aoData[i].value != oCache.lastRequest[i].value)
{
bNeedServer = true;
break;
}
}
}
}
/* Store the request for checking next time around */
oCache.lastRequest = aoData.slice();
if (bNeedServer)
{
if (iRequestStart < oCache.iCacheLower)
{
iRequestStart = iRequestStart - (iRequestLength*(iPipe-1));
if (iRequestStart < 0)
{
iRequestStart = 0;
}
}
oCache.iCacheLower = iRequestStart;
oCache.iCacheUpper = iRequestStart + (iRequestLength * iPipe);
oCache.iDisplayLength = fnGetKey(aoData, "iDisplayLength");
fnSetKey(aoData, "iDisplayStart", iRequestStart);
fnSetKey(aoData, "iDisplayLength", iRequestLength*iPipe);
jQuery.post(sSource, aoData, function (data) {
/* Callback processing */
oCache.lastJson = jQuery.extend(true, {}, data);
if (oCache.iCacheLower != oCache.iDisplayStart)
{
data.aaData.splice(0, oCache.iDisplayStart-oCache.iCacheLower);
}
data.aaData.splice(oCache.iDisplayLength, data.aaData.length);
fnCallback(data)
},"json");
}
else
{
json = jQuery.extend(true, {}, oCache.lastJson);
json.sEcho = sEcho; /* Update the echo for each response */
json.aaData.splice(0, iRequestStart-oCache.iCacheLower); // <- this line
json.aaData.splice(iRequestLength, json.aaData.length);
fnCallback(json);
return;
}
}
Что я упускаю? Любое предложение?