• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

AJAX funktioniert nur lokal

Padarom

Neues Mitglied
Hallo,
ich möchte für einen Login-Bereich das Login-Script über AJAX ausführen lassen um dies im Hintergrund auszuführen.
Das klappt auch, allerdings nur lokal (Ich arbeite mit WebMatrix, lokaler Webserver zum Testen ist IIS 7.5 Express).

Folgender Javascript-Code wird beim Klicken auf den Login-Button ausgeführt (jQuery ist selbstverständlich "installiert"):
Code:
[COLOR=#4F76AC][FONT=Consolas]function[/FONT][/COLOR][COLOR=black][FONT=Consolas] loginUser[/FONT][/COLOR][COLOR=#1E7C70][FONT=Consolas]() {[/FONT][/COLOR]
[COLOR=#4f76ac]  if[/COLOR] [COLOR=#1e7c70]([/COLOR]$[COLOR=#1e7c70]([/COLOR][COLOR=#823125]"#Name"[/COLOR][COLOR=#1e7c70])[/COLOR].val[COLOR=#1e7c70]()[/COLOR] [COLOR=#1e7c70]==[/COLOR] [COLOR=#823125]""[/COLOR] [COLOR=#1e7c70]||[/COLOR] $[COLOR=#1e7c70]([/COLOR][COLOR=#823125]"#Passwort"[/COLOR][COLOR=#1e7c70])[/COLOR].val[COLOR=#1e7c70]()[/COLOR] [COLOR=#1e7c70]==[/COLOR] [COLOR=#823125]""[/COLOR][COLOR=#1e7c70])[/COLOR] [COLOR=#1e7c70]{[/COLOR]        
    alert[COLOR=#1e7c70]([/COLOR][COLOR=#823125]"Bitte beide Felder ausfüllen."[/COLOR][COLOR=#1e7c70]);[/COLOR]    
[COLOR=#1e7c70]  }[/COLOR] [COLOR=#4f76ac]else[/COLOR] [COLOR=#1e7c70]{[/COLOR]        
    $.post[COLOR=#1e7c70]([/COLOR][COLOR=#823125]"../pages/Login.php"[/COLOR][COLOR=#1e7c70],[/COLOR] [COLOR=#1e7c70]{[/COLOR]            
      name[COLOR=#1e7c70]:[/COLOR] $[COLOR=#1e7c70]([/COLOR][COLOR=#823125]"#Name"[/COLOR][COLOR=#1e7c70])[/COLOR].val[COLOR=#1e7c70](),[/COLOR]            
      pass[COLOR=#1e7c70]:[/COLOR] $[COLOR=#1e7c70]([/COLOR][COLOR=#823125]"#Passwort"[/COLOR][COLOR=#1e7c70])[/COLOR].val[COLOR=#1e7c70](),[/COLOR]            
      cookie[COLOR=#1e7c70]:[/COLOR] [COLOR=#823125]"true"[/COLOR]        
[COLOR=#1e7c70]    })[/COLOR].done[COLOR=#1e7c70]([/COLOR][COLOR=#4f76ac]function[/COLOR] [COLOR=#1e7c70]([/COLOR]data[COLOR=#1e7c70],[/COLOR] status[COLOR=#1e7c70])[/COLOR] [COLOR=#1e7c70]{[/COLOR]            
[COLOR=#4f76ac]      if[/COLOR] [COLOR=#1e7c70]([/COLOR]data [COLOR=#1e7c70]==[/COLOR] [COLOR=#823125]"SCS!"[/COLOR][COLOR=#1e7c70])[/COLOR] location.reload[COLOR=#1e7c70]();[/COLOR]            
[COLOR=#4f76ac]      else[/COLOR] alert[COLOR=#1e7c70]([/COLOR]data[COLOR=#1e7c70]);[/COLOR]        
[COLOR=#1e7c70]    });[/COLOR]    
[COLOR=#1e7c70]  }[/COLOR]    
[COLOR=#4f76ac]  return[/COLOR] [COLOR=#9b5f9b]false[/COLOR][COLOR=#1e7c70]; 
[/COLOR][COLOR=#1E7C70][FONT=Consolas]}[/FONT][/COLOR]
Folgender PHP-Code wird dabei aufgerufen:
PHP:
$query = "SELECT * FROM `bs_users` WHERE `Name` = '".mysql_real_escape_string($_POST['name'])."'";        
$result = mysql_query($query);        
if(mysql_num_rows($result) == 0) echo "Der angegebene Account existiert nicht.";        
while($row = mysql_fetch_object($result))        
{            
  if($row->Passwort == $_POST['pass'])            
  {                
    // Speicherung eines Session-Keys in der Datenbank, Setzen der Session-Werte und ggf. Cookies
    echo "SCS!";            
  }
  else echo "Das eingegebene Kennwort ist falsch.";        
}
Wie gesagt, die Codes funktionieren lokal, sobald ich sie allerdings auf meinen Test-Webspace (von bplaced) hochlade,
kommt nach dem Button-Klick weder das Alert, noch lädt sich die Seite neu- AJAX wird also scheinbar nicht aufgerufen.
Auf der Seite für die Registrierung nutze ich ebenfalls AJAX und dort klappt es komischerweise, der Javascript-Code ist jedoch scheinbar identisch.

Nachtrag: Javascript funktioniert und die Funktion wird tatsächlich aufgerufen. So erhalte ich das Alert, wenn ich eines der Felder leer lasse.
Auch funktioniert das PHP-Script, denn wenn ich die entsprechende PHP-Datei direkt aufrufe, so erhalte ich den Text "Der angegebene Account existiert nicht.",
was ja logisch ist, da ich mit einem direkten manuellen Zugriff keine POST-Werte übergebe.

Ich hoffe jemand kann mir weiterhelfen.

Mit freundlichen Grüßen
Padarom
 
Zuletzt bearbeitet:
JavaScript-Fehler werden keine angezeigt?

Ich könnte mir vorstellen dass doch jQuery fehlt. Da JavaScript ja immer lokal ausgeführt wird, MUSS zumindest JS lokal und im web gleich funktionieren.

Achja, müsste es nicht eigentlich 'window.location.reload()' heißen - nur damits auch alle Browser verstehen.
 
Nachtrag: Javascript funktioniert und die Funktion wird tatsächlich aufgerufen. So erhalte ich das Alert, wenn ich eines der Felder leer lasse.
Auch funktioniert das PHP-Script, denn wenn ich die entsprechende PHP-Datei direkt aufrufe, so erhalte ich den Text "Der angegebene Account existiert nicht.",
was ja logisch ist, da ich mit einem direkten manuellen Zugriff keine POST-Werte übergebe.

Wäre besser eine neue Antwort zu verfassen, dann kann alles der Reihe nach durchlesen.

Vielleicht musst du den dataType angeben, da es sich ja um Plain-Text handelt. Obwohl, macht eigentlich keinen Sinn.

Oder häng halt mal ein .fail() hinten dran.
 
Zuletzt bearbeitet:
Habe es soeben nochmal auf der anderen Seite (Registrierung) versucht, wo ja auch AJAX verwendet wird.
Das habe ich nämlich scheinbar bisher gar nicht online getestet, sondern nur lokal- Und auch dort funktioniert es online nicht.

Code:
[COLOR=#881280][FONT=monospace]<script [/FONT][/COLOR][FONT=monospace]src[/FONT][COLOR=#881280][FONT=monospace]="[/FONT][/COLOR][URL="http://lovemedo.bplaced.net/bs/js/jquery-1.9.1.min.js"]js/jquery-1.9.1.min.js[/URL][COLOR=#881280][FONT=monospace]" [/FONT][/COLOR][FONT=monospace]type[/FONT][COLOR=#881280][FONT=monospace]="[/FONT][/COLOR][FONT=monospace]text/javascript[/FONT][COLOR=#881280][FONT=monospace]">[/FONT][/COLOR]

jQuery ist jedoch eingebunden, so steht es im Quelltext vom Browser und der src-Link verweist auch tatsächlich auf das online vorhandene Dokument.
Kann es ggf. Probleme geben, weil ich meinen Javascript-Teil nicht im HTML stehen habe, sondern in einer eigenen Datei (js/javascript.js)?
 
Hast du vielleicht den Pfad relativ zum JavaScript-File, und nicht zur aufgerufenen Seite eingebunden? Versuchs doch mal mit einem absoluten Pfad.
 
Das ist es gewesen... Das hätte ich aber auch mal selbst versuchen können :D
Ich danke dir, Problem ist damit gelöst.
 
Zurück
Oben