非常简单:我使用预准备语句来选择数据并以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字符串中? 谢谢。
答案 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);
}
});