0
votes

$ _Post renvoie une matrice vide après Ajax Post Demande à PHP Page

J'essaie de poster mon nom d'utilisateur et mon mot de passe sur mon fichier PHP via AJAX, mais il post ["nom d'utilisateur"] et post ["mot de passe"] finnez l'index non défini

​​J'ai essayé ce qui suit. P >

/index.php p> xxx pré>

/main.js p> xxx pré>

/home.php p>

if (isset($_POST)) {
$username = $_POST['username'];
$password = $_POST['password'];
    echo "<h2>".$username."</h2>"; 
    echo "<h2>".$password."</h2>";   
} else {    
    echo "<h2>Nothing received</h2>";   
}
print_r($_POST)


0 commentaires

4 Réponses :


1
votes

Votre JavaScript fait une demande postale à home.php avec quelques données dedans.

home.php répond avec certaines données composées de sous-titres HTML et d'un vidage de la variable $ _ / code>. Ce n'est pas JSON.

Vous avez dit à JQuery DataType: 'Json' Donc, il s'attend à JSON. Comme il ne l'a pas eu, il ne lit pas la réponse en tant que succès et appelle erreur au lieu de succès . Puisque vous n'avez pas défini erreur , rien ne se passe.

Si la demande était réussie, elle montrerait l'alerte.

Si vous ne l'aviez pas commenté, vous exécuterez alors window.location = 'home.php' qui déclencherait une demande nouvelle http get to home.php et montrent le résultat.

Cette demande n'inclut pas les données postales, donc home.php ne montrerait rien sauf pour certains vide

éléments, certains index non définies Erreurs et une représentation d'un tableau vide.

Quand je clique sur le réseau 'home.php', cela me donne "index non défini:" pour mon nom d'utilisateur et mon mot de passe.

Ceci donne manuellement le même effet que fenêtre.location = 'home.php'; (fait une demande d'obtention) avec les mêmes problèmes que ceux décrits ci-dessus.

Si vous souhaitez charger les résultats de votre demande HTTP comme nouvelle page, alors n'utilisez pas Ajax , utilisez simplement une soumission de formulaire régulier.

Utilisez AJAX lorsque vous souhaitez traiter la réponse avec JS et pas laissez la page en cours.


2 commentaires

Ok mais j'ai mon erreur défini mais je n'ai toujours pas d'erreur comment puis-je savoir où est le problème? Merci pour votre explant treint !!


@Quentin je souhaite (un jour) de devenir au moins la moitié d'un programmeur comme vous.



-1
votes

Essayez Changer à < / code>


1 commentaires

C'est un horrible hack pour créer un effet mieux réalisé avec e.preventdefault (); ... que l'OP utilise déjà. Cela ne changera rien.



-1
votes

Essayez dans Ajax Call ... DATA {Nom d'utilisateur: Nom d'utilisateur, mot de passe: PSWRD} ... sans "


1 commentaires

Cela n'a aucun effet au-delà de l'économie de 4 octets de JavaScript. Les noms de propriétés d'objet peuvent être des chaînes ou identifiants.



0
votes

Essayez de changer ceci:

Données: { "Nom d'utilisateur": nom d'utilisateur, "Mot de passe": PSWRD },

à ceci:

Données: 'Nom d'utilisateur =' + Nom d'utilisateur + '& Mot de passe =' + PSWRD,

et supprimer ceci:

DataType: 'JSON',


0 commentaires