将PDO对象转换为Javascript JSON
问题描述:
我正在尝试将PDO对象转换为JavaScript JSON。将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);
之前,但似乎我不得不改变我的所有陈述我不的enconding不想做。
这里是我的recieving JS: 功能refreshEntries(){
$.ajax({
url: "< my PHP file >",
type: 'POST',
success: function(returnPDO){
var obj = JSON.parse(returnPDO);
...
}
});
}
的JavaScript,更precide的JSON.parse(returnPDO);
是突破点。我每次都收到" Uncaught SyntaxError: Unexpected token a "
错误消息,我很确定这是来自array()
,它位于PHP数组的开头。
这里一定有一些故障,但我搞不清楚究竟是什么。我想我知道错误在哪里,但不知道如何解决。任何帮助?
答
您已经将您的pdo作为关联数组获取,那么为什么不仅仅是json_encode您的pdo结果呢?
$toReturn = json_encode($queryResult);
echo $toReturn;
另外你还没有设置你的dataType:到你的ajax调用中的json。
$.ajax({
url: "< my PHP file >",
type: 'POST',
dataType: 'json',
success: function(returnPDO){
var obj = JSON.parse(returnPDO);
...
}
});
答
你的json必须符合规范,它应该是一个没有特殊字符的utf-8字符串。属性名称必须用双引号和和和包围......
我建议你得到的一些数据样本,并提交给https://jsonformatter.curiousconcept.com/这将解析您的JSON,给你一个关于什么是错误的胶水
根据东西和事情,你可能甚至不需要json.parse。有时jquery会自动解析它。尝试删除,看看会发生什么。 –
如果你设置'dataType:“json”',jquery会自动将它解析为json。使用浏览器开发工具查看服务器的完整响应。 – frz3993
如果你有jQueryo,你不需要解析器。 –