【发布时间】:2014-05-17 20:57:52
【问题描述】:
我正在使用 dataTables 通过 PHP、Ajax 和 jQuery 显示来自 MySQL 数据库的数据。 我显示的数据是数字,一切正常。
这是我的 php 脚本
require_once '../core/init4ajax.php';
$loteria=$_POST['loteria'];
$lotto = new Lotto();
$ultimos_resultados=$lotto->last_results($loteria,20);
function objectToArray($d)
{
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
return array_map(__FUNCTION__, $d);
} else {
// Return array
return $d;
}
}
$new_array = objectToArray($ultimos_resultados);
$result = array();
echo '[';
foreach ($new_array as $new_array2) {
echo '[';
foreach ($new_array2 AS $value){
/********The following piece of code is used to add a leading zero to single digit numbers********/
/*if (1 == strlen($value)) {
$zero=0;
$value = $zero.$value;
}*/
echo $value;
if($value!==end($new_array2)){ //referencias: http://stackoverflow.com/a/8780881/1883256
echo',';
}
}
echo ']';//referencias: http://www.mydigitallife.info/how-to-access-php-array-and-multidimensional-nested-arrays-code-syntax/
if($new_array2!==end($new_array)){
echo ',';
}else{ echo '';}
}
echo ']';
这是 php 脚本的输出示例:
[[2740,3,9,21,27,46,48],[2741,3,4,13,22,27,29], ... ,[2757,32,34,35,36,50,55]]
这里是 ajax 代码。
$(document).ready(function() {
$.ajax({
url: "ajax/default_chart_numbers_table.php",
type: "post",
data: {loteria: 'melate'},
success : function (resp){
// would look something like ['val1','val2', 'etc']
var column_data = $.parseJSON(resp);
//alert(column_data);
// adding data to datatables
for (var j=0;j<=column_data.length-1;j++){
// adding each row with its column data
//iterating values to add leading zeros to single digits:
$('#dataTables-melate').dataTable().fnAddData(column_data[j]);
}
},
error: function(jqXHR, textStatus, ex) {
console.log(textStatus + "," + ex + "," + jqXHR.responseText);
}
});
} );
我已经意识到我希望单个数字以零开头,例如4,应该显示为04。
通过添加代码以添加前导零(这段代码已经在我的php代码中但已注释):
if (1 == strlen($value)) {
$zero=0;
$value = $zero.$value;
}
现在 php 代码以我想要的方式返回数组:
[[2740,03,09,21,27,46,48],[2741,03,04,13,22,27,29], ... ,[2757,32,34,35,36,50,55]]
然而,现在从 ajax 脚本中我得到以下错误:
SyntaxError: JSON.parse: expected ',' or ']' after array element at line 1 column 9
数据不再显示在数据表中。
为什么会这样?我该如何解决?
我已经解决了: 我只需要将双引号添加到这些单个编辑编号:
if (1 == strlen($value)) {
$zero=0;
$value = '"'.$zero.$value.'"';
}
这就成功了! ☺
【问题讨论】:
-
为什么不在你的 PHP 脚本中使用
json_encode()? -
因为它不是那样工作的。亚历克斯帮我解决了这个问题here
-
出于好奇,为什么您需要为每个单个数字添加前导零?
-
@VincentWilkie 因为当我查找单个数字时,会出现其他不必要的结果。例如,如果我搜索数字“5”,也会出现诸如 50、51、... 59 之类的数字。如果我搜索数字 10,则只会出现具有该数字的行。这就是为什么我想要一个前导零。如果您有任何其他建议,我会很高兴知道! :)
-
有什么理由不能在 PHP 脚本中使用
echo json_encode($multi_dimensional_array)?
标签: php ajax json datatables jquery-datatables