I found my mistake...
I was using "AS" in the mySQL SELECT query. Apparently that will prevent Datatables from parsing the response properly even though it looks correct.
BAD:
SELECT SQL_CALC_FOUND_ROWS concat( "<input type='hidden' id='task_code' value='", t.id, "'><a href='learningguide_edit.php?task=", lg.taskID, "'><img src='../img/view_details_icon.gif' border='0'></a> ", t.title ) AS task, IF(lg.cc_standards<>'-1',LENGTH(REPLACE(lg.cc_standards, '|', '@@'))-LENGTH(lg.cc_standards)+1,0) AS CC_Count, IF(lg.state_standards<>'-1',LENGTH(REPLACE(lg.state_standards, '|', '@@'))-LENGTH(lg.state_standards)+1,0) AS State_count, IF(lg.nocti_standards<>'-1',LENGTH(REPLACE(lg.nocti_standards, '|', '@@'))-LENGTH(lg.nocti_standards)+1,0) AS NOCTI_count, IF(lg.industry_standards<>'-1',LENGTH(REPLACE(lg.industry_standards, '|', '@@'))-LENGTH(lg.industry_standards)+1,0) AS Ind_count
FROM mlg_learning_guides lg, mlg_tasklist_5 t
WHERE lg.taskID=t.id AND lg.courseID=5
GOOD:
SELECT SQL_CALC_FOUND_ROWS concat( "<input type='hidden' id='task_code' value='", t.id, "'><a href='learningguide_edit.php?task=", lg.taskID, "'><img src='../img/view_details_icon.gif' border='0'></a> ", t.title ), IF(lg.cc_standards<>'-1',LENGTH(REPLACE(lg.cc_standards, '|', '@@'))-LENGTH(lg.cc_standards)+1,0), IF(lg.state_standards<>'-1',LENGTH(REPLACE(lg.state_standards, '|', '@@'))-LENGTH(lg.state_standards)+1,0), IF(lg.nocti_standards<>'-1',LENGTH(REPLACE(lg.nocti_standards, '|', '@@'))-LENGTH(lg.nocti_standards)+1,0), IF(lg.industry_standards<>'-1',LENGTH(REPLACE(lg.industry_standards, '|', '@@'))-LENGTH(lg.industry_standards)+1,0)
FROM mlg_learning_guides lg, mlg_tasklist_5 t
WHERE lg.taskID=t.id AND lg.courseID=5