javascript - 如何使用ajax在html下拉列表中显示db的结果?
问题描述
嗨,我是 php 和 ajax 的新手,我正在尝试使用 ajax 在 html 下拉列表中显示查询结果 我的 php 是
$pro1 = mysqli_query("select email from groups");
在这里,我尝试将结果推送到一个数组中,但现在没有出现我希望这个结果数组显示在下拉列表中
我的 html 下拉列表是
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
defer
/>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2>Modal Example</h2>
<!-- Trigger the modal with a button -->
<button
type="button"
class="btn btn-info btn-lg"
data-toggle="modal"
data-target="#shareMdl"
>
Open Modal
</button>
<!-- Modal -->
<div id="shareMdl" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-body">
<h3>Share with people</h3>
<p style="color: red; display: none;" id="errUsr">
Please select atleast one email, to share.
</p>
<div id="email-list-container" class=""></div>
</div>
</div>
</div>
</body>
<script defer>
const emaiList = [];
let emailListIndex = 1;
$(document).ready(function () {
addAddtionalEmail();
function addAddtionalEmail() {
if (emailListIndex < 9) {
$("#email-list-container").append(
`<div class="form-group" style="display:flex">
<select class="form-control" name="email" id="Email-${emailListIndex}" onkeyup="filter(this.value)" placeholder="option">
</select>
</div>`
);
emailListIndex++;
}
}
})
</script>
</html>
我的 php 到目前为止我尝试过但没有工作:
if($action == getEmails)
$properties = array();
$pro1 = mysql_query("select email from groups");
if(mysql_num_rows($pro1) > 0)
{
while($proData = mysql_fetch_assoc($pro1))
{
$properties=$proData
array_push($properties, $props);
}
}
echo json_encode(array('status'=>'ok', 'props'=>$properties));
}
阿贾克斯:
window.fillData = function(){
alert("clicked");
$.ajax({
type:"POST",
dataType:"json",
url:"memberslist.php",
data:{
action:"getEmails",
},
success : function(response)
{
解决方案
我认为这应该是要走的路:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
defer
/>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!-- Bootstrap select -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/css/bootstrap-select.min.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.14/dist/js/bootstrap-select.min.js"></script>
</head>
<body>
<div class="container">
<h2>Modal Example</h2>
<!-- Trigger the modal with a button -->
<button
type="button"
class="btn btn-info btn-lg"
data-toggle="modal"
data-target="#shareMdl"
>
Open Modal
</button>
<!-- Modal -->
<div id="shareMdl" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-body">
<h3>Share with people</h3>
<p style="color: red; display: none;" id="errUsr">
Please select atleast one email, to share.
</p>
<div id="email-list-container" class="">
<div class="form-group" style="display:flex">
<select class="form-control" name="email" id="share_by_email" data-live-search="true">
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script defer>
const emaiList = [];
let emailListIndex = 1;
$(document).ready(function () {
addAddtionalEmail();
});
/* Declare functions outside of the document-ready */
function addAddtionalEmail() {
$.ajax({
type:"POST",
dataType:"json",
url:"memberslist.php",
data:{action:"getEmails"},
success: function(data){
/* It's probably best if you check if 'props' have been set here */
data.props.forEach(function(email) {
$("#share_by_email").append("<option>" + email.email + "</option>");
});
$('#share_by_email').selectpicker();
}
});
}
</script>
</body>
</html>
AJAX 调用在函数内部执行addAddtionalEmail()
。memberslist.php 中的代码可能是这样的:
if($action == getEmails)
$properties = array();
$pro1 = mysql_query("SELECT `email` FROM `groups`");
if(mysql_num_rows($pro1) > 0)
{
while($proData = mysql_fetch_assoc($pro1))
{
array_push($proData['email'], $props);
}
}
echo json_encode(array('status'=>'ok', 'props'=>$properties));
}
我不确定你为什么if (emailListIndex < 9) {
在你的代码中,但我认为这不是必需的。
推荐阅读
- woocommerce-bookings - Woocommerce 预订类别视图
- python - C++调用Python如何处理SystemExit异常
- vb.net - 如何获取运行服务应用程序的服务器的 UNC/完全限定名称
- apache-spark - 是否可以通过 Spark 中的值的总和来过滤列?
- powerbi - 由于星型架构关系,Power BI DAX 函数无法正常工作
- javascript - mongoose:如何在查询时访问多个 select:false 属性?
- java - Whitelabel Error Page This application has no configured error view, so you are seeing this as a fallback
- angular - Angular Karma Jasmine 测试“无法绑定到 'ngIf',因为它不是已知属性”
- angular - 使用 p-dropdown NgPrime 过滤 p-dataView
- javascript - 使用js将按钮附加到输入