2013-10-13 152 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

相關問題