根据用户交互显示数据库列表

时间:2019-05-12 14:49:56

标签: javascript php html

Iam当前主要基于PHP和MySql构建Web应用程序。 在一个站点上,用户可以单击多个按钮,并且根据用户单击的按钮,需要显示不同的MySql数据。 我的第一个想法是将所有可能的输出存储到一个数组中,但是我认为这不是一个明智的选择,因为用户可能甚至不想看到很多数据。 另一个选择是在用户单击按钮后加载数据,这是Iam当前正在尝试的方法。

用户单击一个按钮,并使用Javascript执行以下功能:

function requestParticipators(id) {
        $.ajax({
          url: "../scripts/request-participators.php",
          type: "POST",
          data: {
            "id"  : id
          },
          success: function(data) {
            if(data.code == 1) {
              $('#userList').html(data.message);
              $("#modalMembers").modal("show");
            }else {
              $("#modalFailed").modal("show");
            }
          },
          error: function(error) {
            $("#modalFailed").modal("show");
          }
        });
      }

您可以看到是否成功返回了数据,所以我想在Bootstrap Modal中显示它。在显示之前,我实际上将数据加载到一个名为“ userList”的空div中。但是“ request-participators.php”返回的数据是一个巨大的字符串,因为它包含了引导模态所需的全部数据。当前看起来像这样:

$stmt->bind_result($db_id, $db_email, $db_vorname, $db_nachname);
        while($stmt->fetch()) {
            $output_string .= '<li class="list-group-item px-0">

                <div class="row align-items-center">
                    <div class="col-auto">

                    </div>
                    <div class="col ml-n2">

                        <!-- Title -->
                        <h4 class="mb-1 name">
                            <a href="#">' .$db_vorname .' ' .$db_nachname .'</a>
                        </h4>

                        <!-- Time -->
                        <p class="small mb-0">
                            <span class="text-success">●</span> Online
                        </p>

                    </div>
                    <div class="col-auto">

                        <!-- Button -->
                        <a href="#!" class="btn btn-sm btn-white">
                            Add
                        </a>

                    </div>
                </div> <!-- / .row -->

            </li>';
        }

output_string作为JSON返回:

print json_encode(array('message' => $output_string, 'code' => 1));

这是我想出的最好方法...我有点担心传回这么大的弦。有没有更好的方法可以做到这一点? 非常感谢您阅读并原谅我的英语不好。> << / p>

1 个答案:

答案 0 :(得分:0)

@MaximeLaunois可能指的是您的JSON应该只包含从数据库中提取的实际数据,而不应包含任何html标记。像这样:

..
...
$data=array();
$stmt->bind_result($db_id, $db_email, $db_vorname, $db_nachname);
        while($stmt->fetch()) {
            array_push($data, array($db_id, $db_email, $db_vorname, $db_nachname);
        }
...
..
print json_encode($data);

然后使用JavaScript创建实际的标记客户端。