2016-07-05 9 views
-3

Ich entwickle gerade ein System für den internen Gebrauch in meinem Unternehmen, damit unser Service Desk Team Benutzerkonten entsperren/Passwörter zurücksetzen kann.Stop Seite aktualisieren auf Knopf klicken

Ich habe die PHP/POST-Funktionen dafür abgeschlossen und habe sie mit der .load-Funktion auf dem Dashboard meines Systems aufgenommen. Dies funktioniert und die betreffende Funktion ist LDAP-Konto entsperrt. Der Button wird angeklickt, das Postformular wird abgeschickt und es funktioniert alles. Allerdings wird die gesamte Seite beim Senden aktualisiert, obwohl sie über jQuery geladen wurde. Ich habe Mühe zu verstehen, warum dies passieren würde und wie ich es vermeiden kann, damit ich dem Endbenutzer erfolgreiche oder erfolglose Nachrichten auf Knopfdruck geben kann. Dies ist das Hauptziel und deshalb habe ich begonnen, JS-Ladefunktionen zu verwenden, da ich glaubte, dies würde mir erlauben, dies zu tun.

Ich bin völlig neu zu jQuery/JSON/JS und wenn diese Frage ist leicht beschreibend oder hat eine offensichtliche Antwort Entschuldigung.

EDIT:

So wie ich das Formular enthalten sind, als solche:

<div id="lockedout"></div> 
<script> 
$(document).ready(function(){ 
$("#lockedout").load('/modules/active-directory/includes/lockedout.php'); 
}); 
</script> 

Und die enthalten Form ist:

<?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> 

Dieser Code über dem Armaturenbrett angebracht ist, wo ich mache den JSON-Import.

<?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

Diese Hilfe? https://api.jquery.com/event.preventdefault/ – Mike

+0

Es klingt wie Sie 'preventDefault()' in einem Ihrer Event-Handler verwenden müssen. Leider haben Sie in Ihrer Frage keinen Code angezeigt, so dass Ihnen niemand mit Sicherheit helfen kann –

+0

@RoryMcCrossan Entschuldigung, ich habe meinen obigen Code hinzugefügt. – Jack

Antwort

0

Wenn Sie Inhalte an Backpage senden oder Benutzer überprüfen, aber nicht die gesamte Seite neu laden möchten, verwenden Sie AJAX.

wenn Sie wollen einfach ein paar Warnungen zeigen oder Form zu validieren, wenn Sie auf die Schaltfläche Anwendung klicken Sie JavaScript oder seine Derivate