PHP json_encode多维关联数组

时间:2015-10-22 16:23:30

标签: javascript php json ajax

我多次使用过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() - 输出打印响应就像这样......

// JS

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

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

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

// PHP

var_dump($trows);

// CONSOLE

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功能无效?我之前使用过这个确切的代码,输出很好。

2 个答案:

答案 0 :(得分:3)

尝试并添加:

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

在回显JSON编码结果之前。

修改

如果编码无效,请尝试以下操作:

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

答案 1 :(得分:1)

我会看到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;
}