Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript对象动态创建html表_Javascript_Jquery_Html_Mysql_Json - Fatal编程技术网

使用Javascript对象动态创建html表

使用Javascript对象动态创建html表,javascript,jquery,html,mysql,json,Javascript,Jquery,Html,Mysql,Json,我试图用MySQL表中的数据动态创建一个HTML表。表中的数据不是静态的,因此,当数据库表被更新时,HTML表需要更新 以下是我的PHP代码: $sql = "SELECT * FROM pendingusers"; $result = $conn->query($sql); $response = array(); //$result->fetch_all(MYSQLI_ASSOC); if ($result->num_rows > 0) { $i = 1;

我试图用MySQL表中的数据动态创建一个HTML表。表中的数据不是静态的,因此,当数据库表被更新时,HTML表需要更新

以下是我的PHP代码:

 $sql = "SELECT * FROM pendingusers";
$result = $conn->query($sql);
$response = array(); //$result->fetch_all(MYSQLI_ASSOC);

if ($result->num_rows > 0) {
    $i = 1;
    while($row = $result->fetch_assoc()) //$response[] = $row; 

{    

    $response[$i]['fname'] = $row["firstname"];
    $response[$i]['lname'] = $row["lastname"];
    $response[$i]['uname'] = $row["username"];
    $response[$i]['email'] = $row["email"];
    $response[$i]['password'] = $row["password"];
    $i++;
}

 echo json_encode($response);   

} else {
    echo "0 results";
}
$conn->close();

?>
下面是调用PHP文件的Javascript函数:

function load() {   

            // var users = null;    
            $.post(
            "Returnsmedb.php",
            function (response) {
               console.log(response);
            }, 'json'
        );           
}
这将返回一个对象,其中包含三个内部对象,每个对象表示一行,如下所示:object{1:object,2:object,3:object}。每个内部对象都有字段email、fname、lname、password和uname

我不知道接下来该怎么办。我认为这需要转换成JavaScript数组,但我还没有找到很好的例子。我需要做什么才能将这些数据放入表中


表的每一行都应该对应于一个具有适当字段标题的内部对象。此外,每一行都需要有两个按钮,用于将其从表中删除或将值添加到另一个数据库表中。

以下是使用jQuery基于数据构建HTML标记的方法之一

风险值数据=[ { 电邮:abc@def.ghi, fname:abc, 名称:def, 密码:abcDef, 联埃援助团:德发BC },{ 电邮:1abc@def.ghi, fname:2abc, lname:3def, 密码:4abcDef, 联埃特派团:公元前5年 },{ 电邮:6abc@def.ghi, fname:7abc, lname:8def, 密码:9abcDef, uname:0defAbc } ]; var表体=; var列=[]; //创建标题记录。 tableBody=tableBody+; 数据[0]中的forvar属性{ ifdata[0]。hasOwnPropertyprop{ //附加属性,如电子邮件、fname、lname等。 tableBody=tableBody++prop+; //还保留一个列列表,可用于以后从“数据”对象获取列值。 柱体.pushprop; } } tableBody=tableBody+; //创建数据行。 data.forEachfunctionrow{ //在表中为数据数组中的每个元素创建新行。 tableBody=tableBody+; columns.forEachfunctioncell{ //单元格是每列的属性名称。 //行[cell]为我们提供该单元格的值。 tableBody=tableBody++行[单元格]+; }; tableBody=tableBody+; }; $usersTable.appendtableBody;
这是我如何让它工作的

function load() {   


            $.post(
            "Returnsmedb.php",
            function (response) {

                var block = []

                index = 0;
                for (var item in response){

                    var objectItem = response[item];

                  var firstname = objectItem.fname;
                  var lastname = objectItem.lname;
                  var username = objectItem.uname;
                  var email = objectItem.email;
                  var password = objectItem.password;
                  var deny = document.createElement("input");
                  deny.type = "checkbox";
                  deny.className = "chk";
                  deny.name = "deny";
                  deny.id = "deny";
                  var approve = document.createElement("input");
                  approve.type = "checkbox";
                  approve.className = "chk";
                  approve.name = "approve";
                  var moreinfo = document.createElement("input");
                  moreinfo.type = "checkbox";
                  moreinfo.className = "chk";
                  moreinfo.name = "moreinfo";

                    block.push(firstname);
                    block.push(lastname);
                    block.push(username);
                    block.push(email);
                    block.push(password);
                    block.push(deny);
                    block.push(approve);
                    block.push(moreinfo);

                    dataset.push(block);
                    block = [];


                }




                 var data = [" First Name", " Last Name "," User Name ", " Email ", "Password", " Deny", "Approve", "More Information"]

                tablearea = document.getElementById('usersTable');
                table = document.createElement('table');
                thead = document.createElement('thead');
                tr = document.createElement('tr');

                for (var i = 0; i < data.length; i++) {
                    var headerTxt = document.createTextNode(data[i]);
                    th = document.createElement('th');
                    th.appendChild(headerTxt);
                    tr.appendChild(th);
                    thead.appendChild(tr);
                }

                table.appendChild(thead);


                for (var i = 0; i < dataset.length; i++) {
                    tr = document.createElement('tr');
                    tr.appendChild(document.createElement('td'));
                    tr.appendChild(document.createElement('td'));
                    tr.appendChild(document.createElement('td'));
                    tr.appendChild(document.createElement('td'));
                    tr.appendChild(document.createElement('td'));
                    tr.appendChild(document.createElement('td')); //Added for checkbox
                    tr.appendChild(document.createElement('td')); //Added for checkbox
                    tr.appendChild(document.createElement('td')); //Added for checkbox


                    tr.cells[0].appendChild(document.createTextNode(dataset[i][0]));
                    tr.cells[1].appendChild(document.createTextNode(dataset[i][1]));
                    tr.cells[2].appendChild( document.createTextNode(dataset[i][2]));
                    tr.cells[3].appendChild( document.createTextNode(dataset[i][3]));
                    tr.cells[4].appendChild( document.createTextNode(dataset[i][4]));
                    tr.cells[5].appendChild((dataset[i][5])); //
                    tr.cells[6].appendChild((dataset[i][6])); //
                    tr.cells[7].appendChild((dataset[i][7])); //
                    table.appendChild(tr);                   
                }
                tablearea.appendChild(table);


                $('input.chk').on('change', function() {
                if($('this:checked'))
                {
                    var tr =$(this).parents('tr');
                tr.find("input.chk").not(this).each(function(){
                $(this).prop('checked', false);
                });
                }

                });
            }, 'json'
        );           
}

您是使用纯JS还是使用库,如JQuery、ExtJS、React等?@Meezaan ud Din$.post是jQueryThis可能对您有用:哦,对不起,我只读了第一部分-甚至没有看到第二部分有$.post。@nageep我尝试过以类似的方式创建一个表,但每次我引用返回的数据响应时,它都会说它没有定义。有什么想法吗?这似乎是可行的。我有点困惑,我实际上是如何从MYSQL表中获取数据的。每次我尝试在load函数之外引用响应对象时,都会得到一个未定义的错误。我意识到响应是函数的一个局部对象,所以我不确定如何克服它。这是一个非常广泛的问题,但这里有一些您应该学习的一般步骤:1。将数据数组从PHP转换为JSON。一旦有了JSON对象,就可以轻松地将其传递到Javascript中。2.由于您希望使用Javascript在表中添加/删除单个记录,因此可能需要在PHP中创建一个AJAX端点,您可以使用JQuery访问该端点。3.完成后,可以在页面的HTML标记中创建按钮,这些按钮调用JQuery函数,通过AJAX调用PHP。