将PDO对象转换为Javascript JSON


Converting a PDO object to a 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);,但似乎我必须改变所有语句的编码,这是我不想做的。

这是我收到的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并给你一个错误的胶水