2016-07-05 10 views
-3

私は現在、社内で使用するシステムを開発しており、サービスデスクチームがユーザーアカウントのロックを解除したり、パスワードをリセットしたりすることができます。ボタンをクリックするとページが更新されなくなる

私はこのために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> &nbsp;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] . "&nbsp;(" . $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>'; 
} 
?> 
+0

このヘルプはありますか? https://api.jquery.com/event.preventdefault/ – Mike

+0

イベントハンドラのいずれかで 'preventDefault()'を使う必要があるようです。残念ながらあなたの質問にコードは表示されていないので誰もあなたを確実に助けることができません –

+0

@RoryMcCrossanお詫び申し上げます、上記のコードを追加しました。 – Jack

答えて

0

ユーザーをbackpageか確認するためのコンテンツを提出しますが、ページ全体の使用AJAXをリロードしないようにしたい場合。

ボタンをクリックしたときにアラートを表示したりフォームを検証する場合は、javacriptまたはその派生語を使用してください。

関連する問題