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