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>
答案 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创建实际的标记客户端。