【问题标题】:Converting a PDO object to a Javascript JSON将 PDO 对象转换为 Javascript JSON
【发布时间】:2015-10-16 21:37:46
【问题描述】:

我目前正在尝试将 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 " 错误消息,我很确定这是来自位于 PHP 数组开头的 array()

这里一定有什么问题,但我不知道究竟是什么。我想我知道错误在哪里,但不知道如何修复它。有什么帮助吗?

【问题讨论】:

  • 根据具体情况,您甚至可能不需要 json.parse。有时 jquery 会自动解析它。尝试删除它,看看会发生什么。
  • 如果设置dataType: "json",jquery会自动解析为json。使用浏览器开发者工具查看来自服务器的完整响应。
  • 如果你有 jQueryo,你就不需要解析器了。

标签: javascript php json pdo


【解决方案1】:

您已经将您的 pdo 作为关联数组获取,那么为什么不直接对您的 pdo 结果进行 json_encode 编码呢?

  $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);

        ...
     }
  });

【讨论】:

    【解决方案2】:

    你的 json 必须符合规范,它应该是一个没有特殊字符的 utf-8 字符串。属性名称必须用双引号括起来 and and and ...

    我建议您获取一些数据样本并将其提交给 https://jsonformatter.curiousconcept.com/ 这将解析您的 json 并让您了解问题所在

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 1970-01-01
      • 2015-01-02
      • 2013-11-02
      • 1970-01-01
      • 2021-05-02
      • 2016-12-26
      • 2018-04-28
      相关资源
      最近更新 更多