我正在使用PHP從MYSQL讀取文本字段(說明)並準備JSON對象。模擬JQUERY DataTables插件示例。如何從PHP返回從MySQL返回的文本字段回車?
DESCRIPTION字段包含回車符,我相信這會導致無效的JSON。 JSONLINT.com會生成「語法錯誤,第35行出現意外的TINVALID」,解析失敗「。
http://ageara.com/exp3/server_processing_details_col.php應返回有效的JSON
我試圖使用PHP TRIM()函數刪除CR但沒有多少運氣。
相關的PHP代碼如下....
$rResult = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
$sQuery = "
SELECT FOUND_ROWS()
";
$rResultFilterTotal = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
$iFilteredTotal = $aResultFilterTotal[0];
$sQuery = "
SELECT COUNT(TITLE)
FROM geometa_small
";
$rResultTotal = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
$aResultTotal = mysql_fetch_array($rResultTotal);
$iTotal = $aResultTotal[0];
/* write the JSON output */
$sOutput = '{';
$sOutput .= '"sEcho": '.intval($_GET['sEcho']).', ';
$sOutput .= '"iTotalRecords": '.$iTotal.', ';
$sOutput .= '"iTotalDisplayRecords": '.$iFilteredTotal.', ';
$sOutput .= '"aaData": [ ';
while ($aRow = mysql_fetch_array($rResult))
{
$sOutput .= "[";
$sOutput .= '"<img src=\"details_open.png\">",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['TITLE']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['DATA_CUSTODIAN_ORGANIZATION']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['RECORD_TYPE']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['RESOURCE_STATUS']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['RESOURCE_STORAGE_LOCATION']).'",';
$sOutput .= '"'.str_replace('"', '\"', $aRow['UNIQUE_METADATA_URL']).'",';
$sOutput .= '"'.trim(str_replace('"', '\"', $aRow['DESCRIPTION']), "/r").'"';
$sOutput .= "],";
}
$sOutput = substr_replace($sOutput, "", -1);
$sOutput .= '] }';
echo $sOutput;
function fnColumnToField($i)
{
/* Note that column 0 is the details column */
if ($i == 0 ||$i == 1)
return "TITLE";
else if ($i == 2)
return "DATA_CUSTODIAN_ORGANIZATION";
else if ($i == 3)
return "RECORD_TYPE";
else if ($i == 4)
return "RESOURCE_STATUS";
else if ($i == 5)
return "RESOURCE_STORAGE_LOCATION";
else if ($i == 6)
return "UNIQUE_METADATA_URL";
else if ($i == 7)
return "DESCRIPTION";
}
?>
由於Tandu。嘗試 – user468648 2010-10-10 05:26:08
str_replace(array(「\ r」,「\ n」),array('',''),$ sOutput); echo $ sOutput;但沒有工作,將查找到json_encode() – user468648 2010-10-10 05:33:34
好的答案,甚至進一步,你可以改變代碼爲'str_replace(array(「\ r」,「\ n」),'\ n',$ mysqldata);' ,因爲''\ n''不會再被認爲是PHP中的換行符(它會被看作只是兩個字符 - '\'和'n'),但是當JavaScript在另一側解析它時,會將它們視爲換行符。 (另外,你可以用一個字符串替代多個字符串,第一個變量使用一個數組,第二個字符串替換爲'str_replace()'。) – 2010-10-10 10:03:00