json_encode返回布尔值而不是json字符串

时间:2013-10-13 17:46:43

标签: php ajax json

非常简单:我使用预准备语句来选择数据并以json_encode形式返回。

问题:我没有收到一个充满返回数据的JSON字符串,而是收到这样的内容:

[true, true, true, true]

我的猜测是检查是否设置了每个值,然后只是以布尔形式返回是否设置了值。

$stmt = $connection->prepare("SELECT * FROM details WHERE age = ?");
$stmt->bind_param('i', $age);
$stmt->execute();
$json = array();
while($row = $stmt->fetch()){
$json[] = $row;
}

echo json_encode($json);

这是我正在使用的AJAX。

$(document).ready(
    function () {
        $('#call_back_btn').click(function() {
            $.post("process.php", {
                name:   $('#name').val(),
                age:    $('#age').val(),
                value:  $('#value').val(),
                task:   "submit_prepared"
            }, 
            function(data) {
                alert(data);
            })
        })
    });

我应该怎么做才能将我的数据返回到JSON字符串中? 谢谢。

2 个答案:

答案 0 :(得分:3)

请查看$stmt->fetch()的文档。收到布尔值是完全正确的。修改了代码以使用bind_result

$stmt = $connection->prepare("SELECT name, age FROM details");
$stmt->execute();
$stmt->bind_result($name, $age);
$json = array();
while($stmt->fetch()){
  $json[] = array("name" => $name, "age" => $age);
}

echo json_encode($json);

答案 1 :(得分:1)

尝试从php打印$ json以确保数组正确。然后再次在php中打印json_encode($ json)变量,不带ajax。我通常硬编码查询并直接从浏览器运行它。这样你就可以确保php生成正确的数据。

还可以尝试使用$ .ajax函数。这样你就可以有更多的控制权。

$.ajax({
    url: 'process.php',
    type: 'POST',
    dataType: 'JSON',
    data: {YOUR DATA GOES HERE},
    success: function(data){
            alert(data);
     }
});