기본적으로이 기능은 $_GET
과 작동합니다. 기반 on this discussionthis function을 수정하고 아래와 같은 것을 얻었습니다.파이프 라이닝을 사용한 서버 측 처리
json.aaData.splice(0, iRequestStart-oCache.iCacheLower);
PHP 측이 응답하고,이 테이블은 파이프 라인없이 100 % 작동 : 이제 문제는 파이어 버그는 다음 오류 메시지가
json.aaData is undefined @ line 99
을 제공합니다 (코드의 끝 부분에 위치) 라인이다. 하지만 파이프 라인이 오류가 사용하면 : 나는 무엇을 놓치고
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;
}
}
를? 어떠한 제안?