2016-04-12 9 views
1

Ich versuche, eine Website zu besuchen und mich automatisch anzumelden.Anmeldung auf der Website automatisieren (automatisch ausfüllen und abschicken)

Danach möchte ich zurückkehren, ob dies ein Erfolg oder Misserfolg war, aber ich kann es nicht zum Laufen bringen. Die Seite wird leer geladen und nichts passiert.

Hinweis: Ich habe die URL absichtlich ausgegraut.

Unten ist mein Versuch,

<HTML> 
<HEAD> 
<script src="https://code.jquery.com/jquery-2.2.3.min.js" type="text/javascript"></script> 
<TITLE>Login</TITLE> 
</HEAD> 
<BODY> 
</BODY> 
</HTML> 

<script type="text/javascript"> 
    $(document).ready(function() { 
      runLogin(); 
     }); 

    function runLogin(){ 
     alert("start"); 

     if (window.location.indexOf("url") > -1) { 
       jQuery("#j_username").val("username"); 
       jQuery("#j_password").val("password"); 
       jQuery("#loginForm").submit(); 
      } 
    } 
</script> 
+0

Warum tun Sie möchten sich auf diese Weise einloggen? – Akshay

+0

Welche Art von Daten werden vom Back-End-Anmeldeskript zurückgegeben? Gibt es HTML, JSON, XML oder einfachen Text zurück? – 4castle

+0

Was soll 'window.location.indexOf (" url ") tun? Ist das der Teil, wo du die URL ausgegraut hast? – 4castle

Antwort

0

Es ist das Laden einer leeren Seite, weil Ihr Back-End-Skript wird nicht zurück auf die Seite umgeleitet Sie begann auf. Eine Option besteht darin, die aktuelle Webseiten-URL als zusätzliches Feld an das Anmeldeformular zu senden, damit sie nach der Anmeldung zurückgeleitet werden kann. Dies erfordert eine Umgestaltung des Back-End-Codes, damit diese zusätzlichen Informationen verarbeitet werden können (nicht wirklich möglich, wenn Sie j_security_check verwenden). Eine weitere Option besteht darin, eine AJAX-Anforderung an Ihre Anmeldeseite zu senden, so dass die Seite nicht tatsächlich umgeleitet wird. Das Formular wird lediglich ruhig übermittelt und JS verarbeitet die Antwort.

Wenn Sie die URL der aktuellen Seite auf die Login-Anfrage hinzufügen möchten, dies tun:

function runLogin() { 
    if (window.location.indexOf("url") > -1) { 
      jQuery("#j_username").val("username"); 
      jQuery("#j_password").val("password"); 
      jQuery("#loginForm").append(
       '<input type="hidden" name="url" value="'+window.location.href+'"/>' 
      ); 
      jQuery("#loginForm").submit(); 
    } 
} 

Wenn Sie AJAX verwenden, um eine Login-Anfrage zu senden:

function runLogin() { 
    var $form = $("#loginForm"); 
    $.post($form.attr("action"), $form.serialize(), function(data) { 
     // login successful/unsuccessful message displays 
     // depending on what "data" contains 
    }); 
} 
+0

Das war auch mein Denken, denn von den Informationen, die Sie gegeben haben, werde ich stattdessen versuchen, Ajax zu verwenden, da dies näher an dem liegt, was ich in erster Linie erreichen wollte. Mein einziges Problem ist, wie schicke ich das Formular tatsächlich auf der Webseite ein. Das Formular ist in der Tat #loginForm, aber wie fülle ich die einzelnen Felder mit einer Ajax-Anfrage? – James

+0

Suchen Sie die Funktion '.serialize()' von jQuery und die Funktion '$ .post'. Es konvertiert Formulare in Abfragezeichenfolgen. Es ist das, was ich in meinem Beispiel verwendet habe. – 4castle

+0

Schauen Sie auch nach '$ .post'. Es nimmt eine URL, eine Abfragezeichenfolge und eine Rückruffunktion und übergibt sie. Wenn das Senden abgeschlossen ist, wird die Rückruffunktion ausgeführt. – 4castle

Verwandte Themen