2013-10-13 157 views
0

非常简单:我使用准备好的语句来选择数据并以json_encode形式返回它。json_encode返回的是布尔值,而不是json字符串

问题:不是接收一个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字符串中? 谢谢。

+0

在提醒它之前尝试使用'data = JSON.parse(data);'。 –

+0

@VedantTerkar它为什么会吸?我如何重写,可以说,名称:AJAX的一部分,并使用JSON.parse(数据)呢? –

+0

@VedantTerkar它仍然返回一个布尔json字符串。我插入了'data = JSON.parse(data);'在警报之前。 –

回答

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

现在,我得到一个[对象对象],这是...(我的猜测)好吗?现在...我怎样才能让它提供信息?还有什么我该做的? –

+0

+1我的男人!很好的接收。 –

+0

@TiffanyLowe我想你会通过调用get_result来获得结果集。您将需要使用$ resultset-> fetch_array()遍历此结果集中的行。 – Markus

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

您可以使用'$ .post'设置'dataType'。 – Musa

相关问题