【发布时间】:2016-11-07 01:53:37
【问题描述】:
我目前正在开发一个供公司内部使用的系统,以允许我们的服务台团队解锁用户帐户/重置密码。
我已经为此完成了 PHP/POST 函数,并将它们包含在我系统仪表板上的 .load 函数中。这可行,有问题的功能是 LDAP 帐户解锁。单击按钮,提交帖子表单,一切正常。然而,即使它是通过 jQuery 加载的,它也会在提交时刷新整个页面。我正在努力理解为什么会发生这种情况,以及如何避免它,以便我可以在按钮点击时向最终用户提供成功或不成功的消息。这是主要目的,也是我开始使用 JS 加载函数的原因,因为我相信这可以让我这样做。
我对 jQuery/JSON/JS 完全陌生,如果这个问题有点描述性或有明显的答案,我深表歉意。
编辑:
我包含表格的方式是这样的:
<div id="lockedout"></div>
<script>
$(document).ready(function(){
$("#lockedout").load('/modules/active-directory/includes/lockedout.php');
});
</script>
包含的形式是:
<?php
set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] );
include ('/core/system/global.ldap.php');
$attributes = array("displayname", "mail", "samaccountname", "lockoutTime");
$filter = "(&(objectClass=User)(lockoutTime>=1)(title=*))";
$search = ldap_search($ldap_conn, $ldap_dn, $filter, $attributes) or die (ldap_error($ldap_conn));
$info = ldap_get_entries($ldap_conn, $search);
?>
<h4><i class="fa fa-lock"></i> Currently Locked Out (<?php echo $info["count"]; ?>)</h4>
<br>
<table class="table table-bordered">
<tbody><tr>
<th>Username</th>
<th>Unlock</th>
</tr>
<?php
for ($i=0; $i<$info["count"]; $i++) {
echo "<tr>";
echo "<td>" . $info[$i]["displayname"][0] . " (" . $info[$i]["samaccountname"][0] . ")</td>";
echo "</form><form method='post' action='/active-directory/' id='" . $info[$i]["samaccountname"][0] . "'></form>";
echo '<input type="hidden" name="dn" value="'. $info[$i]["dn"] .'" form="' . $info[$i]["samaccountname"][0] . '">';
echo "<td><center><button type='submit' id='unlock' name='unlock' class='btn btn-success btn-flat' form='" . $info[$i]["samaccountname"][0] . "'>Unlock </button></center></td>";
echo "</tr>";
}
?> </tbody></table>
此代码附加在我正在执行 JSON 导入的仪表板上方。
<?php
if(isset($_POST['unlock']))
{
$attr["lockoutTime"] = "0";
$userdn = $_POST['dn'];
$result = ldap_modify($ldap_conn, $userdn, $attr);
echo '<script>
$(document).ready(function(){
$("#lockedout").load("/modules/active-directory/includes/lockedout.php");
});
</script>';
}
?>
【问题讨论】:
-
听起来您需要在其中一个事件处理程序中使用
preventDefault()。不幸的是,您没有在问题中显示任何代码,因此没有人可以确定地帮助您 -
@RoryMcCrossan 抱歉,我已经在上面添加了我的代码。