当我从数据库中调用查询并显示它时,我试图删除数组括号,但我得到的结果如下:
我需要它显示如下:
我认为添加json-encode.php可以解决这个问题,但事实并非如此。我究竟做错了什么?任何帮助表示赞赏!谢谢!
Javascript(Ajax请求)
$(document).ready(function() {
$.ajax({
url: 'get.php',
}).done(function(data){
$('.right ul').append('<li>'+ data +'</li>');
});
});
PHP (get.php)
<?php
$host = "localhost";
$user = "adminn";
$pass = "1234";
$db = "admin";
$con = mysqli_connect($host, $user, $pass, $db);
$query = mysqli_query($con, "SELECT DISTINCT title FROM sample_table WHERE username = 'admin' ");
// $data = str_replace(array("[\'","'\]"),'',$data);
foreach($query as $data)
{
echo '<li>' . json_encode(array_values($data)) . '</li>';
}
?>
的
`'<li>' . json_encode(array_values($data)) . '</li>';`
与
'<li>' . $data['title'] . '</li>';
答案 0 :(得分:2)
的jQuery
$(document).ready(function() {
$.ajax({
url: 'get.php',
dataType: 'json'
}).done(function(data){
$.each(data, function(i,v) {
$('.right ul').append("<li>"+v+"</li>");
});
});
});
PHP
<?php
$host = "localhost";
$user = "adminn";
$pass = "1234";
$db = "admin";
$mysqli = new mysqli($host, $user, $pass, $db);
$query = "SELECT DISTINCT title FROM sample_table WHERE username = 'admin'";
if ($result = $mysqli->query($query)) {
$response = array();
while ($row = $result->fetch_assoc()) {
array_push($response, $row['title']);
}
echo json_encode($response);
}
?>
您需要在ajax调用中明确声明数据类型以便开始。此外,我注意到你正在解析错误的响应并在上面进行了更改。
答案 1 :(得分:2)
问题在于:
echo '<li>' . json_encode(array_values($data)) . '</li>';
查询为:SELECT DISTINCT title FROM sample_table WHERE username = 'admin'
。
查询返回的每一行都是PHP array,其中包含键title
下的单个值。这是你想要打印的。使用square brackets syntax for arrays:$data['title']
。
使用json_encode()
将数据放入网页没有任何意义。用于生成HTML的动态数据必须使用htmlspecialchars()
正确编码为HTML。
您的代码应为:
foreach($query as $data)
{
echo '<li>' . htmlspecialchars($data['title']) . '</li>';
}