我目前正在尝试将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: function 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数组的开头。
这里肯定有一些错误,但我无法弄清楚到底是什么。我想我知道错误在哪里,但不知道如何解决它。有帮助吗?
答案 0 :(得分:1)
你已经把你的pdo作为一个关联数组提取了,为什么不只是json_encode你的pdo结果呢?
$toReturn = json_encode($queryResult);
echo $toReturn;
你还没有在你的ajax调用中设置你的dataType:到json。
$.ajax({
url: "< my PHP file >",
type: 'POST',
dataType: 'json',
success: function(returnPDO){
var obj = JSON.parse(returnPDO);
...
}
});
答案 1 :(得分:1)
你的json必须符合规范,它应该是一个utf-8字符串,里面没有特殊字符。属性名称必须用双引号和和...包围...
我建议您获取一些数据样本并将其提交给https://jsonformatter.curiousconcept.com/这将解析您的json并为您提供有关错误的信息