使用 jquery 解析 php 脚本返回的 JSON 字符串

Posted

技术标签:

【中文标题】使用 jquery 解析 php 脚本返回的 JSON 字符串【英文标题】:Parsing with jquery a JSON string returned by a php script 【发布时间】:2012-06-06 21:08:29 【问题描述】:

嘿嘿。 我有一个 php 脚本返回的这个 json 字符串(2 个不同的表上的 2 个不同的 mysql 查询): (抱歉,这是一个法国应用程序)

[
  "statut":"2",
  "0":"2",
  "lib_statut":"En cours de traitement",
  "1":"En cours de traitement",
  "appelant":"GUEDIDER Jacqueline",
  "2":"GUEDIDER Jacqueline",
  "nom":"Virginie SORREL",
  "3":"Virginie SORREL",
  "date_creation":"05\/04\/2012 \u00e0 14:14:55",
  "4":"05\/04\/2012 \u00e0 14:14:55",
  "titre":"FACEO - Plus de message d'attente",
  "5":"FACEO - Plus de message d'attente"
,

  "nom":"Jonathan MORET",
  "0":"Jonathan MORET",
  "date_inter":"06\/04\/2012 \u00e0 11:18:07",
  "1":"06\/04\/2012 \u00e0 11:18:07"
,

  "nom":"Jonathan MORET",
  "0":"Jonathan MORET",
  "date_inter":"20\/04\/2012 \u00e0 08:22:53",
  "1":"20\/04\/2012 \u00e0 08:22:53"
]

第一个问题:有谁知道为什么每行记录两次(第一次是索引,第二次是列名)?

第二:如何在我的 jquery 脚本中解析这两个对象?

提前致谢。

【问题讨论】:

我们能看到构建它的查询吗?这可能与为什么一切都是两次有关。 【参考方案1】:

我自信地预测,所有内容都出现两次的原因是,创建 JSON 的人是通过使用 mysql_fetch_array() 的直接输出而不使用 $result_type 参数来实现的。如果使用mysqli_fetch_array()/mysqli_result::fetch_array(),这也是正确的。

告诉他们(你?)改用mysql_fetch_assoc()

事实上,改用PDO。

如果你这样做,你不必担心处理“两个”对象,因为你只会有一个。

【讨论】:

【参考方案2】:

对于第一点,可能是因为你使用 mysql_fetch_array (http://ca.php.net/manual/en/function.mysql-fetch-array.php) 没有第二个参数 (MYSQL_ASSOC, MYSQL_BOTH, MYSQL_NUM)

默认为 MYSQL_BOTH,该函数返回一个关联数组,带有数字键 AND 与 select 参数。

而对于第二点,你可以使用

$.ajax(
  url: url,
  dataType: 'json',
  data: data,
  success: callback
);

(http://api.jquery.com/jQuery.getJSON/)

【讨论】:

【参考方案3】:

第一个问题:有谁知道为什么每行记录两次(第一次是索引,第二次是列名)?

可能是一个错误的 SQL 查询 ... ;) 严重的是,没有表结构和查询,就不可能说出原因 ..;

第二:如何在我的jquery脚本中解析这两个对象?

我假设您已将 JSON 分配给 Javacript var 数据:这是访问数据的方法:

var datas = "yOURJSONSTRING"; // Replace here your json ...
// then
var firstEl = datas[0];
// Then you can use : 
console.log("Statut is : " +firstEl.statut); // consle is for debugging purpose on FF
// then for 2nd and 3rd elements: 
var sndEl = datas[1];
var trdtEl = datas[2];

希望这会有所帮助...

问候;

mimiz

【讨论】:

以上是关于使用 jquery 解析 php 脚本返回的 JSON 字符串的主要内容,如果未能解决你的问题,请参考以下文章

从 PHP 调用 node.js 脚本不返回任何内容

返回本地文本而不从 PHP 脚本解析到 ajax 脚本

在 WordPress 中使用自定义 JQuery 脚本而不更新主题 functions.php

带有json响应的jQuery ajax请求,如何?

php脚本得到两个ajax请求,只返回一个?

JS中将JSON的字符串解析成JSON数据格式《转》