【问题标题】:On click get from mysql load into table单击从 mysql 获取加载到表中
【发布时间】:2017-04-13 04:13:50
【问题描述】:

当用户单击提交按钮时,我能够将 5 个表单中的数据输入 mysql。

现在,我想在用户单击其他按钮时在表格中显示数据。我知道我需要使用 Ajax 和 Php,但是我找不到一个我清楚的例子。

我的部分代码如下。我没有包括用于将表单数据发布到数据库的 javascript 和 php。如果这能帮助你理解,我可以添加它。

input.html

<div class="container">
<form action="vocab_input.php" method="post" id="input_form">
<label>Word:</label>  
    <input type="text" name='word'>

  <label>POS:</label>
    <input type="text" name='pos'>

  <label>Translation:</label>
    <input type="text" name='trans'>

  <label>Definition:</label>
    <input type="text" name='definition'>

  <label>Sentence:</label>
    <input type="text" name='sen'>

  <input type="submit">

 </form>
 </div>

<div class="btn-group btn-group-justified" role="group" aria-label="..." style="margin-top: 50px;">
  <div class="btn-group" role="group">
    <button type="button" class="btn btn-default" id="list">Vocab List</button>
  </div>
</div>

<-- I want the table displayed here when user clicks the list button -->

get_input.js

$(function() {
    $('#list').on('click', function(e) {
        var data = $("#list :input").serialize();
        $.ajax({
            type: "GET",
            url: "get_input.php",
            data: data,
        });
        e.preventDefault();
    });
});

get_input.php

<?php

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM user_input";
$result = $conn->query($sql);

while ($row = mysql_fetch_array($result)) {
    echo '<tr>';
    foreach($row as $field) {
        echo '<td>' . htmlspecialchars($field) . '</td>';
    }
    echo '</tr>';
}

$conn->close();
?>

【问题讨论】:

  • 查看一些文档stackoverflow.com/documentation/ajax/1082/…注意有一个.success函数用来处理返回的数据
  • 你在混合 APIS ,注意 mysql_fetch_array ,这只是一个错字吗?
  • @RiggsFolly 好的。我会查看 .success 函数。 var数据线怎么样。我是从以前发布到数据库的代码中提取的,所以我认为它需要有所不同。
  • @hassan 应该是 mysqli 吗??

标签: php html mysql ajax


【解决方案1】:

需要表格的 HTML 创建一个基本表格元素来插入数据。

<table id="mydata"></table>

PHP 不是回显每一行,而是创建一个返回数组,然后打印该数组 json 编码。

$return = array()
while ($row = mysql_fetch_array($result)) {
    foreach($row as $field) {
        $return[] = '<td>' . htmlspecialchars($field) . '</td>';
    }
}

print(json_encode($return));

js调用成功函数中的js遍历返回的json,新建一个html变量。然后使用该新变量设置您在上面的 HTML 部分中创建的表的 html。

$(function() {
    $('#list').on('click', function(e) {
        var data = $("#list :input").serialize();
        $.ajax({
            type: "GET",
            url: "get_input.php",
            data: data,
            dataType: "json",
            success: function(data) {
              var html;
              if(data) {
                for(var i=0; i < data.length; i++) {
                  html += "<tr>data[i]</tr>";
                }
                $("#mytable").html(html);
              }
            }
        });
        e.preventDefault();
    });
});

这完全是我的想法,未经测试,但假设所有其他函数都返回正确的数据,它应该可以工作。

根本没有错误处理,基本上我通常做的不是只返回$return,而是将所有数据放在一个$return["data"]数组中,然后如果PHP函数错误返回一个 $return["error"],然后在 js 中而不是 if(data) 你可以做 if(data.error !="") 或类似的事情。

【讨论】:

  • 这对我来说不起作用,但我是新手,所以问题可能出在我的代码中的其他地方。
  • 我在答案中编写了所有代码,检查您的控制台是否有任何 js 错误,还检查您的数据是否确实返回了某些内容。如果您打开 Chrome 检查器,然后转到 Network 和 XHR,您可以看到 ajax 调用以及它们返回的内容。
猜你喜欢
  • 2016-01-30
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多