2009-11-23 3 views
0

Je travaille sur un script de connexion, et je veux envoyer l'entrée à un script PHP, le vérifier, puis faire quelque chose s'il correspond à celui que j'ai dans le fichier config.php.Créer une variable jQuery à partir d'un script PHP?

pseudo code php (de admin_login.php)

<?php 
require("../config.php"); 
if($_POST['password'] == $password) { 
    $showLoginPage = true; 
    } 
    else { 
     $showLoginPage = false; 
    } 
?> 

jQuery:

$("#admin_login_submit").click(function(event) { 
    event.preventDefault(); 
    var pass = $("#admin_login_password").val(); 
     $.post("includes/process/admin_login.php", 
       { password: pass }, 
       function(data){ 
        $("#show_admin_feedback").html(data); 
     }); 

Si je pouvais par magie créer un code jQuery, ce que je veux faire ressemblerait à ceci:

$("#admin_login_submit").click(function(event) { 
    event.preventDefault(); 
    var pass = $("#admin_login_password").val(); 
     $.post("includes/process/admin_login.php", 
       { password: pass }, 
       function(data){ 
        $("#show_admin_feedback").html(data); 
        showLoginPage = $showLoginPage; 
     }); 
      if(showLoginPage == true) { 
       $("#main").load("logged_in.php"); 
      } 
    }); 

Oh, j'ai $("#show_admin_feedback").html(data); étant retourné parce que je retournais "travaillé" ou "n'a pas fonctionné" quand j'ai été test le faire. :-p.

------ Fixe. Merci, gigue!

php

<?php 
require("../config.php"); 
if($_POST['password'] == $password) { 
    header('HTTP/1.1 200 OK'); 
    } 
    else { 
     header('HTTP/1.1 404 Not Found'); 
    } 

?> 

jQuery

$("#admin_login_submit").click(function(event) { 
    event.preventDefault(); 
    var pass = $("#admin_login_password").val(); 
     $.ajax({ 
      type: "POST", 
      url: "includes/process/admin_login.php", 
      data: "password=" + pass, 
      success: function(){ 
       $("#main").load("logged_in.php"); }, 
      error: function(){ 
       $("#admin_login_show").html("<b>Failed Login</b>"); } 
     }); 
    }); 

Répondre

4

Soit il suffit de modifier votre script php pour retourner un code d'état HTTP 404 lors de la connexion échoue. De cette façon, votre fonction de rappel ne se déclenchera pas et vous resterez sur la page de connexion. Mais vous devrez trouver quelque chose pour dire à l'utilisateur que la connexion a échoué.

Ou vous envisagez d'utiliser l'appel $.ajax() au lieu de $.post(). Vous pouvez maintenant réécrire votre script php pour définir différents codes d'état HTTP en fonction de la connexion réussie/échouée.

par exemple. renvoyer 200 en cas de succès et 404 en cas d'échec de la connexion.

Maintenant, avec l'appel $.ajax(), vous pouvez enregistrer le rappel success et le rappel errror et agir en conséquence. Définir show_admin_feedback dans les deux cas (affichant quelque chose qui indique le succès/échec pour l'utilisateur) et si le succès appelant également $("#main").load("logged_in.php");

+0

A travaillé magnifiquement. Merci! :) – Andrew

+1

Très bien. Je serais allé avec le retour d'un objet JSON, mais j'aime mieux celui-ci. Bien, je voudrais utiliser l'en-tête 401 - non autorisé. Semble plus approprié :) – Atli

2

Export JSON à partir de votre code PHP, et faire tout ce que vous aimez avec les objets que vous obtenez de cette JSON :)

Questions connexes