Lorsqu’un utilisateur envoie le formulaire sur ma page, j’utilise AJAX pour envoyer les informations sans actualiser la page. Une fois que l’utilisateur a soumis les informations, je souhaite exécuter une fonction PHP déjà écrite qui affiche les informations. Est-ce possible ou dois-je exécuter une autre fonction ajax pour mettre à jour après
$(function () { $('add').on('submit', function (e) { $.ajax({ type: 'post', url: 'submit.php', data: $('this').serialize(), success: function () { alert('form was submitted'); } }); e.preventDefault(); updateWords(); //PHP FUNCTION }); });
Vous aurez besoin de lancer un autre appel AJAX en cas de succès du premier.
JavaScript ne peut pas interagir directement avec PHP et vous ne pouvez donc pas appeler une fonction PHP à partir de la fonction succès / achèvement de l’appel AJAX.
en réponse de cela.
J’ai plusieurs formulaires sur la page et probablement 5 appels ajax différents dans lesquels pas plus de 2 appels en même temps, si json est préférable, avez-vous un lien vers du matériel de lecture ou un exemple de stack supplémentaire similaire à celui-ci afin que je puisse enseigner moi-même – user934902
tout d’abord
jquery a été conçu pour les anciens navigateurs afin de prendre en charge les fonctions de base que ie6 ne prend pas en charge
L’utilisation de jQuery est utile si vous souhaitez bénéficier d’un support complet sur presque tous les navigateurs.
mais il y a aussi beaucoup de mauvais côtés:
Nous sums maintenant dans une ère où la plupart des utilisateurs utilisent leurs appareils mobiles et les navigateurs modernes qui prennent en charge javascript 1.7.Android, ios, safari, Internet Explorer 10, Chrome, Opera et Firefox prennent en charge javascript 1.7
le code ci-dessous est supporté par ces navigateurs.
c’est une fonction ajax écrite par moi, elle gère post & get
vous pouvez en savoir plus sur cette fonction ici https://stackoverflow.com/a/18309057/2450730
function ajax(a,b,e,d,f,g,c){ c=new XMLHttpRequest; !f||(c.upload.onprogress=f); !g||(c.onprogress=g); c.onload=b; c.open(e||'get',a); c.send(d||null) } // Params: // Url,callback,method,formdata or {key:val},uploadFunc,downloadFunc,placeholder
une simple requête get serait
ajax('example.php',responseFunction);
et une fonction de poste complexe serait
ajax('example.php',responseFunction,'post',new FormData(form),uploadFunc,dlFunc);
tu as besoin de Ça.
alors si vous avez votre formulaire
il suffit d’écrire une fonction comme ça
var form=document.getElementsById('myForm'); form.onsubmit=function(e){ e.preventDefault(); ajax('submit.php',SUCCESS,'post',new FormData(this)); }
et nous en arrivons à votre question:
créez le fichier submit.php pour vos besoins
$_POST,'files'=>$_FILES,'info'=>$extrainfo,'errors'=>$err); echo json_encode($data); ?>
cela retourne un tableau encodé en json à utiliser plus tard en javascript.
Maintenant, nous devons élaborer ce JSON. dans la fonction SUCCESS
function SUCCESS(){ var data=JSON.parse(this.response); if(data.errors.length>0){ // you have some errors }else{ // no errors // display your response in a proper way. console.log(data); } }
à l’intérieur de cette fonction, il vous suffit d’afficher en fonction des données de réponse.
data
contiennent tout ce dont vous avez besoin.
voici le code entier.
copiez et collez dans un fichier txt et enregistrez-le sous le nom submit.php
. J’ai testé seulement en chrome pour l’instant.
$_POST,'files'=>$_FILES,'info'=>$extrainfo,'errors'=>$err); echo json_encode($data); }else{ ?> upload
Si la fonction dépend de l’appel AJAX à submit.php
, alors créez un nouvel appel AJAX. Sinon, ajoutez simplement la fonction à submit.php et appelez-la à la fin du fichier.
Vous devez utiliser la fonction ajax qui effectue les informations de mise à jour pour mettre à jour la page elle-même en même temps.
Il suffit de retourner le code HTML utilisable comme le retour de ajax et de l’utiliser comme contenu HTML de la page.
Exemple: test.php
PHP est côté serveur, javascript est côté client. vous ne pouvez pas appeler php du client si la page est déjà chargée.
donc le moyen facile est ajax
dans le submit.php append:
echo json_encode($_POST);
ou la
Fonction PHP que j’ai déjà écrite
… les informations dont vous avez besoin.
et dans la fonction de réussite
success: function () { // i don't use jquery but the response contains the json ssortingng console.log('the words you wanna update:',JSON.parse(response)); // updateWords(JSON.parse(response)); }
MODIFIER
vous n’avez pas besoin de plus d’une fonction ajax
vous dites que vous avez déjà écrit un script pour afficher les informations suivantes au client.
append ce script au submit.php
et la fonction succes vous donnera ce dont vous avez besoin comme réponse.
j’ai ajouté echo json_encode($_POST);
parce que la plupart du temps, les informations de réponse / mise à jour dont vous avez besoin sont celles que vous venez de publier.