【发布时间】:2015-08-15 20:06:10
【问题描述】:
我有一个下拉列表,通过<select>,它是由一个javascript代码生成的,它也来自我的数据库:
function dirfunc(){
var dirdiv = document.getElementById("dirdiv");
var ahref = document.getElementById("href");
var directidarr = new Array();
var directorarr = new Array();
<?php
include("../conn.php");
if($stmt = $con->prepare("SELECT directorid,directorname FROM directortb")){
$stmt->execute();
$stmt->bind_result($directorid,$directorname);
$counter = 0;
while($stmt->fetch()){
?>
directidarr[<?php echo $counter; ?>] = "<?php echo $directorid; ?>";
directorarr[<?php echo $counter; ?>] = "<?php echo $directorname; ?>";
<?php
$counter = $counter + 1;
}
$stmt->close();
}
?>
var div = document.createElement("div");
div.setAttribute("class","form-group");
var label = document.createElement("label");
label.setAttribute("class","col-sm-2 control-label");
label.appendChild(document.createTextNode("Director"));
var div2 = document.createElement("div");
div2.setAttribute("class","col-sm-9");
var sel = document.createElement("select");
sel.setAttribute("name","director");
sel.setAttribute("class","form-control");
for (var x = 0; x < directidarr.length; x++){
var opt = document.createElement("option");
opt.appendChild(document.createTextNode(directorarr[x]));
opt.setAttribute("value", directidarr[x]);
sel.appendChild(opt);
}
var div3 = document.createElement("div");
div3.setAttribute("class","col-sm-1");
var div4 = document.createElement("div");
div4.setAttribute("class","input-group");
div2.appendChild(sel);
div3.appendChild(ahref);
div.appendChild(label);
div.appendChild(div2);
div.appendChild(div3);
dirdiv.appendChild(div);
}
在我的 HTML 代码中,它生成下拉菜单,在其右侧是一个显示模式的按钮。在此模式中,是一种允许用户为选择下拉列表添加更多选项的表单。
这是我用来添加数据而不刷新页面的脚本:
$(function() {
$("#adddirector").click(function(e) {
e.preventDefault();
var directorname = $("#directorname").val();
var dataString = 'directorname=' + directorname;
if(directorname == '')
{
$('.success').fadeOut(200).hide();
$('.error').fadeIn(200).show();
}
else
{
$.ajax({
type: "POST",
url: "../action.php",
data: dataString,
success:{
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
}
return false;
});
});
使用这种形式:
<form class="form-horizontal" action="../action.php" method="POST">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Director's Name</label>
<div class="col-sm-10" id="ccdiv">
<input type="text" class="form-control" name="directorname" id="directorname" value="" required>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default" name="adddirector" id="adddirector">Add Director <span class="glyphicon glyphicon-plus"></span></button>
</div>
</div>
</form>
但是添加新数据后,通过表单或后端/phpmyadmin,下拉列表没有更新。用户仍然必须刷新页面才能更新下拉列表。我缺少什么或应该对我的脚本做什么?
【问题讨论】:
-
我认为问题在于您的包含
include("../conn.php");。记住文件仅在页面加载时包含。这就是它在刷新时起作用的原因,尝试在你的函数之外添加include -
您的添加导演代码在哪里?页面加载时给定的代码只执行一次。
-
@LuthandoLoot - 实际上,这不是问题。我连接良好,它可以顺利获取数据。而连接文件其实就在这个文件的pre-folder里面。
-
@Sachink - 同时,我正在通过后端/phpmyadmin 向
directortb添加数据。 -
没错,您的 php 代码在页面加载时只执行一次。您需要 ajax 来获取更新的数据。对,刷新页面后就可以了'
标签: javascript php mysql ajax twitter-bootstrap