私は現在、社内で使用するシステムを開発しており、サービスデスクチームがユーザーアカウントのロックを解除したり、パスワードをリセットしたりすることができます。ボタンをクリックするとページが更新されなくなる
私はこのためにPHP/POST関数を完成させ、システムのダッシュボードに.load関数を含めました。これは機能し、問題の機能はLDAPアカウントのロック解除です。ボタンがクリックされ、投稿フォームが提出され、すべて正常に動作します。ただし、jQuery経由でロードされていても、送信時にページ全体が更新されます。私はこれがなぜ起こるのか理解するのに苦労しています。どのようにしてそれを避けることができるので、エンドユーザにボタンのクリックに成功または不成功のメッセージを与えることができます。これが主な目的であり、JSロード関数の使用を開始した理由は、そうすることができると信じていたからです。
私はjQuery/JSON/JSにとって全く新しいです。この質問がやや説明的であるか、明白な回答がありましたらお詫び申し上げます。
EDIT:
Iは、フォームが含まれている方法のようなある:
<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>';
}
?>
このヘルプはありますか? https://api.jquery.com/event.preventdefault/ – Mike
イベントハンドラのいずれかで 'preventDefault()'を使う必要があるようです。残念ながらあなたの質問にコードは表示されていないので誰もあなたを確実に助けることができません –
@RoryMcCrossanお詫び申し上げます、上記のコードを追加しました。 – Jack