【问题标题】:JSON data is not returned不返回 JSON 数据
【发布时间】:2013-05-29 22:50:15
【问题描述】:

问题是没有出现警告消息“TEST”,虽然函数getData.php成功执行并返回了一些数据。我在 Firelog 中检查了它,我可以在其中看到以下输出:

Array{"arr":[["1","EZY14ZM","2013-05-29 16:44:38","2013-05-29 16:45:28"],["1","VLG1307","2013-05-29 16:47:05","2013-05-29 16:47:55"],["1","WZZ212","2013-05-29 16:49:12","2013-05-29 16:50:02"]],"dep":[["1","VLG8306","2013-05-29 16:59:17","2013-05-29 17:00:00"],["1","VLG3786","2013-05-29 17:07:29","2013-05-29 17:08:12"],["1","IBE1851","2013-05-29 17:08:38","2013-05-29 17:09:21"],["1","DLH58Y","2013-05-29 17:09:47","2013-05-29 17:10:30"]]}

如何解决这个问题?

function show_data() {
 $.getJSON(
    'h_index.php?module=mod_1&pag_mod=getData.php',
    function(data) {
       alert("TEST");
    }
 );             
}

getData.php

<?php
   //...
   echo json_encode(array('arr' => $rows_arr, 'dep' => $rows_dep););
   die();
?>

【问题讨论】:

  • 从响应中出现的那个数组,我猜你在 getData.php 中回显了一个数组
  • @Ryan Pilbeam:为了检查这一点,我按以下方式更改了 json_encode: json_encode(array('TEST'=>$rows_arr...) 结果我得到了 Array{"TEST": [["1"... 所以,这个回显返回 JSON 数据。

标签: php json getjson


【解决方案1】:

引用:您在 Firebug 中查看的数据:

Array{"arr":[["1","EZY14ZM","2013-05-29 16:44 .....

注意开头的Array.....这是无效的JSON。

您调用的实际json_encode() 函数很好。它确实有一个额外的分号,但这是无效的 PHP 语法,所以我认为它是在您发布问题时悄悄出现的,而不是在您的实际代码中。

所以Array 不是由json_encode() 函数产生的杂散文本,所以它一定来自PHP 中的其他地方。在错误输出的代码中寻找echoprint。 (可能是通过打印一个数组变量而不是实际的字符串“Array”)

【讨论】:

  • 为了检查这一点,我按以下方式更改了 json_encode: json_encode(array('TEST'=>$rows_arr...) 结果我得到了 Array{"TEST":[["1 "...所以,这个回显返回 JSON 数据。
  • @KlausosKlausos - 你的测试实际上并不能证明什么。正如我所说,“数组”来自代码中的其他地方;它不是来自json_encode()。您可以通过完全注释掉json_encode() 行来证明这一点……您会发现输出中仍然有“Array”文本。
  • 是的,没错。那么,我需要找到并评论一些回声吗?
  • 是的。正如我在答案中所说,您需要在执行此操作的代码中的其他位置找到回声或打印并将其删除。我不知道它在您的代码中的其他位置,因为您没有再向我们展示它,但它就在某个地方。你必须找到 id。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多