JQuery Ajax PHP-无法从MySQL获取数据

时间:2018-08-24 09:14:16

标签: javascript php jquery ajax

我试图找出下面的代码是怎么回事,但我不知道。我制作了一个html页面,该页面与php和js文件通信。我的示例的目的是从服务器端获取数据并在客户端显示它们。我也做了两个按钮。一个按钮是为了显示所有条目,第二个按钮是当用户提供特定ID时向我显示特定条目。

问题在于语法可以。它通过了所有必要的检查。但是它没有显示任何内容,不幸的是控制台没有任何问题消息。我只想告诉您,我已经将这3个文件放在此路径C:\ wamp64 \ www \ PHP中,并且我正在从此处运行selectfrm.html:http://127.0.0.1/PHP/selectfrm.html

那么,您能帮我吗?

selectfrm.html:

<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
<script type="text/javascript" src="select.js">
</script>
</head>
<body>
<button id="button">Select All </button>
<br>
<input type="text" id="id" />
<button id="button2">Select by ID</button>
<div id="content"></div>
</body>
</html>

select.js

$(document).ready(function(){
    $("#button").click(function(){

        function show_all(){
            $.ajax({
                type: "POST",
                url: "select.php",
                data:{action:"showroom"},
                success: function (data) {
                    $("#id").hide();
                    $("#button2").hide();
                    $("#content").html(data);
                }
            });
        }

        show_all();
    });
});
$(document).ready(function(){
    $("#button2").click(function() {

        function show_selected() {
            var id=$("#id").val();
            $.ajax({
                type: "POST",
                url: "select.php",
                data:{action:id},
                success: function (data) {
                    $("#content").html(data);
                    $("#button").hide();
                }
            });
        }

        show_selected();
    });
});

select.php:

<?php
$link=mysqli_connect("localhost", "root", "", "connection");

if (mysqli_connect_errno())
    echo "Failed to connect to MySQL:" .mysqli_connect_error();

$action=$_POST["action"];
if($action=="showroom") {
    $query = "SELECT * FROM names";
    $show = mysqli_query($link, $query) or die ("Error");
    echo "<table border='2px'><tr><td>name_id</td><td>age</td></tr>";
    while ($row = mysqli_fetch_array($show)) {
        echo "<tr><td>" .$row['name_id'] ."</td><td>" .$row['name'] ."</td><td>" .$row['age'] ."</td></tr>";
    }
    echo "</table>";
}
else{
    $query = "SELECT * FROM names WHERE name_id = '$action'";
    $show = mysqli_query($link, $query) or die ("Error");
    echo "<table border='2px'><tr><td>name_id</td><td>age</td></tr>";
    while ($row = mysqli_fetch_array($show)) {
        echo "<tr><td>" .$row['name_id'] ."</td><td>" .$row['name'] ."</td><td>" .$row['age'] ."</td></tr>";
    }
    echo "</table>";
}
?>

1 个答案:

答案 0 :(得分:1)

在以下情况之后,您缺少</script>结束标记:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">

一些不相关的建议

  • 您可能想了解有关SQL注入攻击的信息,您的PHP 脚本容易产生。我建议您探索prepared statements
  • 始终建议您将视图代码与逻辑分开,因此,请尝试将所有来自PHP脚本的结果HTML放入单独的视图文件,并将所有必要的数据传递给它。在使用时,您可以将PHP's alternate syntax用于视图文件,这样会更干净。

类似的东西:

<table border="2px">
    <tr>
        <td>name_id</td>
        <td>name</td>
        <td>age</td>
    </tr>
    <?php foreach ($names as $name): ?>
    <tr>
        <td><?= $name['name_id'] ?></td>
        <td><?= $name['name'] ?></td>
        <td><?= $name['age'] ?></td>
    </tr>
    <?php endforeach ?>
</table>