2015-10-22 3 views
2

Я json_encode() функции много раз в PHP используется, но по некоторым причинам я не могу найти проблему здесь ...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" 
    }, 

Вопросы: Почему не работает функция json_encode моего php? Я использовал этот точный код раньше, и результат был прекрасен.

+0

Вы проверили вашу страницу, просто открыв ее в браузере? Вы получаете ожидаемый результат? Если да: проблема в коде AJAX, если нет: что именно вы получаете? – ccKep

+0

Вы уже используете консоль; почему бы не посмотреть на вкладке «Сеть» инструментов dev, чтобы увидеть, как выглядит фактический ответ HTTP? – Simba

+0

@ccKep Yea, если я var_dump переменную '$ trows', она будет выгружать данные на консоль, если я использую' json_encode', она печатает пустую строку –

ответ

3

Try и добавить:

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

Перед тем, как эхо ваш JSON закодированный результат.

EDIT:

Если кодировка не работает, попробуйте следующее:

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

Вы прибивали его, это была ошибка кодирования, и 'array_map()' исправил это! –

+0

Привет, дружище, рад, что смогу помочь –

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; 
} 
+0

Я брошу это там, попробую 1 сек. –

+0

не сообщил об ошибках в файле журнала http ... –

+0

Хорошо, да, наконец, выдается ошибка кодирования, спасибо за вашу помощь +1 –

Смежные вопросы