0
votes

Php et ajax pour obtenir une variable de retour

J'utilise php et ajax pour faire un message dans la page. Demande.php demande le deuxième retour.php. Mais je n'ai pas le retour:

demande.php xxx

retour.php xxx p> résultat attendu est le résultat attendu Le numéro est renvoyé par retour.php


6 commentaires

Avez-vous vérifié votre console de navigateur pour voir si votre message jQuery est en cours d'exécution à votre poste ou peut-être peut-être vérifié la console de navigateur pour des erreurs?


Oui c'est l'intrus, il ne montre pas.


Une raison quelconque de votre JS et de vos formes HTML est dans un fichier PHP?


@Vladimirmujakovic Quel problème voyez-vous avec le JavaScript sur la même page pour le php ? Ce n'est pas comment je voudrais structurer des choses, mais je ne vois pas non plus comment cela causerait des problèmes pertinents pour votre commentaire ...


Pas de problème, je suis juste curieux à des fins de test.


@Vladimirmujakovic parce qu'il existe également des appels PHP dans le fichier.


4 Réponses :


0
votes

Votre post code> peut échouer. Ajouter un Erreur code> Callback pour signaler à ce sujet:

$.ajax({
    type: 'POST',
    url: 'return.php',
    data: {postnuber: numberp},
    success: function(res) {
        $('#numberp').html(res);
    },
    error: function(xhr, status, error) {
        alert('error: ' + status);
    }
});


0 commentaires

0
votes

Votre code semble aller droit. Son erreur dans des éléments de forme. Vous écrivez «numéro» ID Two Times.SO Programme ne peut pas obtenir la valeur. Il suffit de remplacer l'identifiant comme ci-dessous.

Dans le premier formulaire, changez l'ID P>

<form>
    Enter No:<input type="text" id="getnumber" name="number"/><br/>  
    <input type="button" value="Get number" onclick="getnumber()"/>  
</form> 


3 commentaires

Oui, j'ai pensé à cela avant de poster. Ça ne marche pas. Je soupçonne son navigateur


J'ai essayé votre code .Juste remplacer l'ID dans le premier formulaire. Cela résoudra votre problème


À la fin, le problème était le manquant

. Voir @Codebreaker S POST



1
votes

première chose est id unique. Vous utilisez un ID = numéro code> dans deux endroits qui crée une ambiguït.check ce code de travail.

demande.php p>

<?php

function returnString() {
    $post_number = $_POST['postnumber'];
    echo "the name entered ->", $post_number, " <- hier";
}
returnString();
?>


4 commentaires

Ces champs de saisie sont sous des formulaires séparés, il est correct de le faire tant qu'il sélectionne le bon formulaire lorsqu'il manipule la soumission - mais sinon, ouais, ouais, dans un environnement réel, vous voulez probablement être plus précis.


Ouais c'est sous les formes séparées, mais éventuellement, vous obtenez la valeur par ID.SO, cela crée définitivement une ambiguïté


Mon mauvais, je cherchais l'attribut de noms, je n'ai pas remarqué que l'ID a également été nommé numéro. Vous êtes 100% correct. Les identifiants doivent toujours être uniques.


@Codebreaker Comme j'ai commenté les suggestions de Gaurav seulement en changeant le travail de l'identifiant. J'ai essayé cela auparavant. Juste sur peu de détails que vous avez mentionnés consiste à ajouter le

sans cela ne fonctionnera pas. Merci! Je ne comprends pas pourquoi? Pourquoi nous avons besoin de
ici et pourquoi juste pour le deuxième élément (AJAX)?



1
votes

J'ai modifié votre code pour utiliser Sumbit () pour capturer les données de formulaire. De cette façon, nous pouvons sérialiser les données et l'envoyer à votre processeur de formulaire (notez que Serialize () Serialisera tous les champs d'entrée de votre formulaire, il serait alors à la hauteur de votre gestionnaire de formulaire. Valeurs correctes.

dans return.php J'ai modifié votre _ Post _ Post Variable pour refléter le champ de saisie Nom valeur d'attribut. Le nom attributs est la façon dont la PHP sait de rechercher des valeurs de forme (que je sache). Enfin, j'ai changé votre type d'entrée vers Soumettre et à l'intérieur du gestionnaire Soumettre () gestionnaire j'utilise E.PreventDefault () Pour prévenir le comportement par défaut et utiliser AJAX.

Il est plus sémantiquement correct d'utiliser type = "Soumettre" pour soumettre des boutons.

En outre, il n'est pas nécessaire d'utiliser l'attribut onclick = "" dans votre élément de formulaire, il est un peu propre pour séparer votre JS de votre HTML et gérer la soumission.

Le code suivant fonctionne sur mes machines.

demande.php xxx

retour.php xxx


3 commentaires

Cela fonctionne comme un charme, et il est en effet plus clair et lisible. Merci! Je ne comprends que pourquoi la forme ne suffira pas et nous avons besoin de


Le seul divi dont vous avez besoin est la sortie div, qui était dans votre code. Vous cible #Numberp dans votre fonction de réussite afin de pouvoir exister quelque part sur votre document. Il ne doit pas nécessairement être un identifiant ou un div, mais votre exemple le ciblait


C'est exactement ce que je voulais dire. Dans mon code d'origine (voir ci-dessus), je retourne "NumberP" dans mon message () mais je ne l'explique pas dans mon formulaire de demande. J'ai oublié la sortie

et c'était le tour. Quoi qu'il en soit, votre solution sérialisant tout le formulaire est également une bonne solution. J'apprécie votre temps :)