我目前正在尝试将PDO对象转换为javascript JSON。
下面是我的代码: PHP: $personArray = array();
$queryResult = < this gets the valid result of a $statement->fetchall(PDO:FETCH_ASSOC) >
foreach($queryResult as $p){
$personArray[] = array(
"Id" => $p["Id"],
"Name" => $p["Name"],
"Text" => $p["Text"]
);
}
echo json_encode($personArray);
请注意,我之前尝试过json_encode($queryResult);
,但似乎我必须改变所有语句的编码,这是我不想做的。
这是我收到的JS:函数refreshEntries () {
$.ajax({
url: "< my PHP file >",
type: 'POST',
success: function(returnPDO){
var obj = JSON.parse(returnPDO);
...
}
});
}
Javascript,更准确地说,JSON.parse(returnPDO);
是断点。我每次都得到" Uncaught SyntaxError: Unexpected token a "
错误消息,我很确定这是来自array()
,它站在PHP中我的数组的开始。
你已经获取你的pdo作为一个关联数组,所以为什么不只是json_encode你的pdo结果?
$toReturn = json_encode($queryResult);
echo $toReturn;
你还没有设置你的dataType: json在ajax调用。
$.ajax({
url: "< my PHP file >",
type: 'POST',
dataType: 'json',
success: function(returnPDO){
var obj = JSON.parse(returnPDO);
...
}
});
你的json必须符合规范,它应该是一个没有特殊字符的utf-8字符串。属性名称必须用双引号和and和…
我建议你获取一些数据样本并将其提交到https://jsonformatter.curiousconcept.com/这会解析你的json并给你一个错误的胶水