删除php中的数组括号 - AJAX请求

时间:2018-01-15 16:38:09

标签: javascript php ajax

当我从数据库中调用查询并显示它时,我试图删除数组括号,但我得到的结果如下:

  • [" TITLE1"]
  • [" TITLE2"]
  • [" TITLE3"]

我需要它显示如下:

  • title1
  • TITLE2
  • TITLE3

我认为添加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>';

2 个答案:

答案 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>';
}