【问题标题】:PHP : got a json parse errorPHP:得到一个 json 解析错误
【发布时间】:2013-07-30 14:17:51
【问题描述】:

我想通过 jQuery 使用 ajax 将数据库中的数据导入到我的 javascript 代码中,但是我遇到了 json 解析错误,我真的不知道它是从哪里来的。你可以帮帮我吗 ?

目标是在地图上建造建筑物,我从数据库中获取几何元素,例如坐标和形状参数。

在JS文件中,输入:

 $.ajax({ 

  type: "GET",
  url: "ajax_processor.php",
  dataType : "html",

  error:function(msg, string){ 
     alert( "Error !: " + string );
  }

  success:function(returnData){ 

     var data = $.parseJSON(returnData); 

     for(var ID_geometryElement  in data) {
          addComp($data[bldg], 
                  $data[iZ], // zone where is the building
                  $data[iType], //type of the geometric element
                  $data[x0],
                  $data[y0],//coordinates top-left
                  $data[p], // geometric parameters
                  );
     }
   }
 });

});

在 PHP 文件中:

try {
   $bdd = new PDO('mysql:host=localhost;dbname=building_geometry','admin','password');
}

 $reponse = $bdd->query('SELECT * FROM ID_GEOMETRYELEMENT');
 $donnees = $reponse->fetch(); 

  header('Content-Type: application/json'); 
  echo json_encode($response); 

  ?>  

【问题讨论】:

  • 你从 ajax 中得到了什么?
  • 首先你必须在 JS 代码中修复一件事。如果您正在编写for(var ID_geometryElement in data) {,那么您将在ID_geometryElement 变量中获取每个项目,而不是在$data 中(以及从哪里获得$ JS var?)。
  • 这是什么意思?我希望 ajax 执行函数 addComp() 并用它从数据库中查询的数据填充数据,但我之前在 json 解析中遇到了错误。
  • 除了对json_encode() 的单个调用的输出之外,您的 php 程序是否输出其他任何内容?浏览器在 http 响应数据中显示什么?此外,在您的 JS 代码中,您似乎有一个名为 data 的变量,但看起来您是通过名称 $data 来引用它。这看起来像一个错误。
  • 你试一试没有问题......

标签: php jquery ajax json parsing


【解决方案1】:

您正在尝试对数据库语句进行 json_encode 处理,以处理您返回的查询。那不是你可以编码的东西。代码应该是

echo json_encode($donnees);
                 ^^^^^^^^--- the actual data

如果您完成了最基本的调试,例如console.log(returnData) 在 JS 中,你会看到你没有从脚本中得到任何有效的返回值。

【讨论】:

  • 因为这是我第一次用 javascript 编码,所以我不知道有这个调试工具。我试试看,谢谢!
  • 谢谢,现在可以使用 Firebug,我得到了正确解析的 json。
【解决方案2】:
dataType : "html",

必须

dataType : "json",

如果您希望响应中有 JSON 格式

编辑:http://api.jquery.com/jQuery.post/

数据类型

类型:字符串

服务器预期的数据类型。默认值:智能猜测(xml、json、脚本、文本、html)。

【讨论】:

  • 什么都不做。 datatype json 告诉 jquery 你正在从服务器返回 json,导致它自动解码字符串。但是 OP 无论如何都在做 .parseJSON,所以 type:html 是“好的”。
  • 哦,是的,我已经改了,但是json解析还是有错误
【解决方案3】:

$response 只是一个游标,需要返回获取的数据。

try {
   $bdd = new PDO('mysql:host=localhost;dbname=building_geometry','admin','password');
}

$reponse = $bdd->query('SELECT * FROM ID_GEOMETRYELEMENT');
$donnees = $reponse->fetch(); 

header('Content-Type: application/json'); 
echo json_encode($donnees); 

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多