【问题标题】:PHP json_encode multidimensional associative arrayPHP json_encode 多维关联数组
【发布时间】:2015-10-22 16:23:30
【问题描述】:

我已经多次使用php的json_encode()函数,但由于某种原因我似乎无法在这里找到问题...

注意:为了清楚起见,我删除了错误检查。

//PHP

<?php
session_start();
require 'global/query.php';
$sql = "SELECT sfl,station,latitude,longitude,address,city FROM maps";
$stmt = $pdo->prepare($sql);
$stmt->execute();
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
    $trows[] = $result;
}
echo json_encode($trows);
?>

我正在使用 AJAX,我只是 console.log()-ing 输出以打印响应,如下所示...

//JS

var callback = {
    "projects": function(e){
        console.log(e.target.response);
    }
};

在控制台中它打印一个没有任何数据的空行...


现在,如果我 var_dump $trows 控制台中的输出将打印数据,所以我知道我的 sql 语句可以正常工作...

//PHP

var_dump($trows);

//控制台

array(522) {
  [0]=>
  array(6) {
    ["sfl"]=>
    string(1) "1"
    ["station"]=>
    string(26) "COMPRESSOR STATION"
    ["latitude"]=>
    string(2) "23"
    ["longitude"]=>
    string(4) "-115"
    ["address"]=>
    string(10) "Unnamed Rd"
    ["city"]=>
    string(9) "blah"
  }
  [1]=>
  array(6) {
    ["sfl"]=>
    string(1) "2"
    ["station"]=>
    string(17) "STA TERMINAL"
    ["latitude"]=>
    string(2) "16"
    ["longitude"]=>
    string(4) "-101"
    ["address"]=>
    string(11) "15 Ranch Dr"
    ["city"]=>
    string(8) "Blah Blah"
  },

问题:为什么我的 php 的 json_encode 函数不起作用?我之前使用过这个确切的代码并且输出很好。

【问题讨论】:

  • 您是否仅通过在浏览器中打开页面来测试您的页面?你得到预期的输出了吗?如果是:您的 AJAX 代码有问题,如果不是:您到底收到了什么?
  • 你已经在使用控制台了;为什么不查看开发工具的 Net 选项卡,看看实际的 http 响应是什么样的?
  • @ccKep 是的,如果我 var_dump $trows 变量,它会将数据转储到控制台,如果我使用 json_encode,它会打印空行
  • @Simba 是的,我也看过它,它是空白响应。
  • @VincentWilkie 是的,我一开始以为可能是这样,但我之前确实测试过它并没有相关性,不过感谢您的意见!

标签: javascript php json ajax


【解决方案1】:

尝试添加:

 header("Content-type: application/json; charset=utf-8");

在回显 JSON 编码结果之前。

编辑:

如果编码不起作用,请尝试以下操作:

while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) 
{
    $trows[] = array_map('utf8_encode', $result);
}

【讨论】:

  • 你成功了,这是编码错误,array_map() 修复了它!
  • 干杯伙伴,很高兴我能帮上忙
【解决方案2】:

我会看看 PHP 告诉你什么:

改变

echo json_encode($trows);

$json = json_encode($trows);
$error = json_last_error();
if ($error !== JSON_ERROR_NONE) {
    echo json_last_error_msg();
} else {
    echo $json;
}

【讨论】:

  • 我会把它扔进去试试 1 秒
  • 好吧,终于输出编码错误了,谢谢你的帮助+1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多