首页 > 解决方案 > 使用 AJAX 调用表

问题描述

因此,当用户单击图像时,我尝试显示表格。我走了很远,但我卡住了,似乎找不到我的错误。

当我打开控制台时,出现以下错误:

在此处输入图像描述

现在汉尼拔是我想在表格中显示的用户组的一部分。

我不会发布整个代码,因为它很多。我会尽量将其保留在相关部分。在这种情况下,我知道我进入了执行查询的 .php 文件。

由于我测试了查询,我知道它可以工作,所以我将在单独的 .php 文件中展示我如何将其返回:

$Guest_Invite_Data = filterTable($List_Guests_Query);
$Guest_Invite_Data_fetched = mysqli_fetch_array($Guest_Invite_Data);

echo json_encode($Guest_Invite_Data_fetched);

function filterTable($query)  
{   
    $filter_Result = mysqli_query($GLOBALS['connect'], $query);
    return $filter_Result;
}    

这是我的 jQuery 的一部分:

success:function(Guest_Invite_Data_fetched) {
    createTableByJqueryEach2(Guest_Invite_Data_fetched);
},

这是我的功能:

function createTableByJqueryEach2(data2){

    var eTable2="<table><tr><th colspan='5'>Gäste einladen</th></tr><tr><th>Person</th></tr>"
    $.each(data2,function(index2, row2){

        eTable2 += "<tr>";
        $.each(row2,function(key2,value2){
            eTable2 += "<td>"+value2+"</td>";
        });
     eTable2 += "</tr>";
    });
    eTable2 +="</table>";
    $('#guest_table').html(eTable2);
 }

有人发现我的错误吗?

编辑:按要求输出的图片

在此处输入图像描述

编辑 2:按要求输出的文本

Array ( [0] => Hannibal [firstname] => Hannibal [1] => Lecter [lastname] => Lecter [2] => Cannibals Inc. [name] => Cannibals Inc. ) {"0":"Hannibal","firstname":"Hannibal","1":"Lecter","lastname":"Lecter","2":"Cannibals Inc.","name":"Cannibals Inc."}

标签: phpjqueryajax

解决方案


使用以下作为测试代码,我发现两件事:

一个。您正在从数据库中获取索引数组和关联数组。请注意您的 JSON 中的编号索引和值,然后是关联(列名)和值:

"0":"Hannibal","firstname":"Hannibal"

你应该只获取你想要的东西。例如,我会mysqli_fetch_assoc()在这里使用 - 给我列名和值。

湾。您正在遍历数据,然后尝试遍历生成的文本:,这就是导致错误的原因。例如,row2在第一次迭代中包含 value Hannibal,所以你的第二个循环本质上是在尝试这样做:

$.each('Hannibal',function(key2,value2){...

Hannibal,只是文本,不能像这样循环。它没有键或值。

对于这些数据,您只需要一个循环。这是证明这一点的测试代码:

var guest_data =  {"0":"Hannibal","firstname":"Hannibal","1":"Lecter","lastname":"Lecter","2":"Cannibals Inc.","name":"Cannibals Inc."};

function createTableByJqueryEach2(data2){

    var eTable2="<table><tr><th colspan='5'>Gäste einladen</th></tr><tr><th>Person</th></tr>"
    $.each(data2,function(index2, row2){

        eTable2 += "<tr>";
        eTable2 += "<td>"+row2+"</td>";
        eTable2 += "</tr>";
    });
    eTable2 +="</table>";
    $('#guest_table').html(eTable2);
 }

 createTableByJqueryEach2(guest_data);

这导致以下结果:

<div id="guest_table">
    <table>
        <tbody>
            <tr>
                <th colspan="5">Gäste einladen</th>
            </tr>
            <tr>
                <th>Person</th>
            </tr>
            <tr>
                <td>Hannibal</td>
            </tr>
            <tr>
                <td>Lecter</td>
            </tr>
            <tr>
                <td>Cannibals Inc.</td>
            </tr>
            <tr>
                <td>Hannibal</td>
            </tr>
            <tr>
                <td>Lecter</td>
            </tr>
            <tr>
                <td>Cannibals Inc.</td>
            </tr>
        </tbody>
    </table>
</div>

您可能希望有不同的布局,这正是我为证明错误所做的。


推荐阅读