将PDO对象转换为Javascript JSON

时间:2015-10-16 21:37:47

标签: javascript php json pdo

我目前正在尝试将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数组的开头。

这里肯定有一些错误,但我无法弄清楚到底是什么。我想我知道错误在哪里,但不知道如何解决它。有帮助吗?

2 个答案:

答案 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并为您提供有关错误的信息