[RESOLU] comment récupérer une variable javascript pour la mettre dans une variable php?

Eléphanteau du PHP | 19 Messages

30 oct. 2018, 19:20

Bonjour a la communaute ,

j'ai une fonction en javascript et j'aimerai récupérer le output de ces 2 elements

Code : Tout sélectionner

visitedElem notVisitedElem
dans 2 variable php ,
browseroutput.php

Code : Tout sélectionner

$visited = $_POST['visitedElem']; $notvisited = $_POST['notVisitedElem'];
voici la function javascript

Code : Tout sélectionner

function test () { const button = document.querySelector('button') const visitedElem = document.getElementById('visited') const notVisitedElem = document.getElementById('not_visited') button.onclick = () => { window.location.hash = '#start' window.location.reload(true) } document.querySelectorAll('h3').forEach((node) => { node.style.display = 'block' }) document.getElementById('disclaimer').style.display = 'block' window.performance.setResourceTimingBufferSize(1000) window.HOSTS.forEach(function (url, i) { window.fetch(url, {mode: 'no-cors'}).then(() => { display(url, notVisitedElem) }).catch(() => { display(url, notVisitedElem) }) }) const intervalId = setInterval(() => { const timings = window.performance.getEntriesByType('resource') timings.forEach((timing) => { let url = timing.name if (url.includes(':443') && !visited[url]) { display(url, visitedElem) visited[url] = true } }) }, 666) setTimeout(() => { console.log('timing out') clearInterval(intervalId) }, 300000) }


je voudrai ajouter ce genre de code afin d'exporter le output dans 2 php variables
mais comme je suis debutant ...évidement ca ne fonctionne pas :)

Code : Tout sélectionner

$.post ('browseroutput.php',(visitedElem[],notVisitedElem[]));
pourriez vous me donner une direction svp ?

merci beaucoup
Modifié en dernier par DigitalGeek le 30 oct. 2018, 21:34, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7743 Messages

30 oct. 2018, 20:56

Bonjour,

Tu as 2 parties dans ton appli :
1) l'envoi des données en javascript
2) la réception (et le traitement) dans un script PHP

Pour valider le 1), il faut que tu ouvres la console de développement de ton navigateur (Ctrl+Maj+i sur Firefox ou Chrome) que tu ailles dans l'onglet réseau/network, et ensuite que tu regardes si l'envoi des données se fait bien et avec les bons paramètres en cliquant sur la ligne où il y a le nom de ton fichier appelé.
Voici la doc de Jquery $.post que tu utilises, inspires toi des exemples si tu as un problème :
https://api.jquery.com/jquery.post/


Ensuite une fois que cette première partie est validée, tu pourras t'attaquer à ton script PHP pour le traitement.
Tu as un tuto ici qui est assez bien fait :
https://openclassrooms.com/fr/courses/9 ... ormulaires
Un formulaire en POST c'est la même chose que ton appel $.post()
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 19 Messages

30 oct. 2018, 21:40

Merci pour votre réponse @rthur , il manque la partie de mon outil que je n'ai pas poster , (index.html) et je viens de voir qu'il contient les id pour chaque output ..
je me suis rendu compte que la partie JS que j'ai poster sur le forum n'est pas le bon endroit pour récupérer ces 2 variables...
le boulet ...

Eléphanteau du PHP | 19 Messages

30 oct. 2018, 22:47

voici la partie de mon index.html

Code : Tout sélectionner

<div id="content"> <div><button>Test</button></div> <div id="visited_container"> <h3 style='display:none;'>visited:</h3> <div id='disclaimer'>Wait..</div> <ul id="visited"> </ul> </div> <div id="not_visited_container"> <h3>checked so far:</h3> <ul id="not_visited"> </ul> </div> </div>
apres avoir lu https://api.jquery.com/jquery.post/
voici un code qui pourrai fonctionner .....

Code : Tout sélectionner

<script type="text/javascript"> var visited = $('#visited').val(); var not_visited = $('#not_visited').val(); $.post ('browseroutput.php',{postvisited:visited,postnotvisited:not_visited}; </script>
mais il n y a pas de formulaire via POST a récupérer dans mon index.html....

le script se lance tout seul

Code : Tout sélectionner

http://www.exemple.com/index.html#start
(via le button)
est tout se déploie automatiquement

je cherche a exporter le resultat de ces 2 ID dans browseroutput.php avec l'ajax

Code : Tout sélectionner

<ul id="visited"> <ul id="not_visited">
merci beaucoup

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7743 Messages

30 oct. 2018, 23:53

Et donc ? Que dis la console de développement ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 19 Messages

31 oct. 2018, 13:33

Bonjour ,alors je me suis rendu compte qu'il y avait des erreurs de syntaxe , comme par exemple un ")" manquant empêchant le script de se lancer et envoyer le $.post dans browseroutput.php , cela dit maintenant bien que le browseroutput.php se lance , cela ne fonctionne pas encore

Code : Tout sélectionner

<div><button>Test</button></div> <div id="content"> <div id="visited_container"> <h3>visited:</h3> <div id="disclaimer"></div> <ul id="visited"></ul> </div> <div id="not_visited_container"> <h3>Sites checked so far:</h3> <ul id="not_visited"></ul> </div> </div>

Code : Tout sélectionner

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js "></script> <script> $('#content').ready(function(){ var visited = $('#visited').val(); var not_visited = $('#not_visited').val(); $.post('post_receiver.php', {visited:visited,not_visited:not_visited}, $(this).serialize(), function(data){ // show the response of visited ul id $('#visited').html(data); }).fail(function() { alert( "Posting failed." ); }); return false; }); </script>
Image

j'ai ajouter en bas de ma page ceci pour voir les requêtes POST

Code : Tout sélectionner

<?php echo "<pre>"; print_r($_POST); echo "</pre>"; ?>
mais rien ne sort ,étrange :) je ne suis pas loin ....

j'ai un peut de mal a comprendre car le probleme c'est que les exemples sur la toile reprennent souvent une recuperation de form (submit) donc ce n'est pas pareil :)

merci beaucoup

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7743 Messages

31 oct. 2018, 16:37

Dans la console réseau de ton navigateur si tu cliques sur la ligne post_receiver.php, il va t'afficher à droites les paramètres qui sont passés, donc vérifie que tu as bien les données voulues.

Tu peux remplacer ton echo "<pre>"; print_r($_POST...
par var_dump($_POST); c'est mieux pour debuguer.


Et enfin, que ce soit en utilisant $.post() ou un formulaire en POST ça revient _exactement_ au même au niveau du PHP qui reçoit la donnée
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 19 Messages

31 oct. 2018, 18:08

merci pour le var_dump @rthur ,
J'ai oublier de preciser que je ne vois pas de output dans les array de la ligne post_receiver.php sur la console, le fichier php est bien loader mais les paramètres ne sont pas passés

Code : Tout sélectionner

array(0) { }
par contre bizarrement , lorsque je remplace la ligne

Code : Tout sélectionner

$.post('post_receiver.php', {visited:visited,not_visited:not_visited}, $(this).serialize(), function(data){
par des paramètres "predefini"

Code : Tout sélectionner

$.post('post_receiver.php', { user_id: "143", username: "ninjazhai", website: "https://codeofaninja.com/" }, function(data){
les paramètres sont bien passés

Code : Tout sélectionner

array(3) { ["user_id"]=> string(3) "143" ["username"]=> string(9) "ninjazhai" ["website"]=> string(25) "https://codeofaninja.com/" }

j'en déduis que les paramètres ne sont pas lu bien que j'ai renseigner <div id="visited"> comme endroit a extraire
Modifié en dernier par DigitalGeek le 31 oct. 2018, 21:12, modifié 2 fois.

Eléphanteau du PHP | 19 Messages

31 oct. 2018, 18:45

off
Modifié en dernier par DigitalGeek le 01 nov. 2018, 01:06, modifié 1 fois.

Eléphanteau du PHP | 19 Messages

01 nov. 2018, 01:05

Alors je viens de trouver que je ne cherchais pas le bon element,
j'ai découvert que les elements qui s'affichent dans

Code : Tout sélectionner

<ul id="visited"></ul>
sont des balises <li>
(j'avance pas a pas ..)

ce qui fait

<ul id="visited">
<li>http://www.site1.com</li>
<li>http://www.site2.com</li>
<li>http://www.site3.com</li>
</ul>

je remet la partie du code html

Code : Tout sélectionner

<div id="content"> <div id="visited_container"> <h3>visited:</h3> <div id="disclaimer"></div> <ul id="visited"></ul> </div> <div id="not_visited_container"> <h3>site checked visited</h3> <ul id="not_visited"></ul> </div> </div>

re voici mon script ....
j'ai lu beaucoup d'exemples sur stackoverflow et autres et apparement si j'ai bien compris il est possible de sélectionner un element li a l'interieur d'une balise ul qui a l'id=visited

j'ai essayer ceci mais ca ne fonctionne toujours pas...

Code : Tout sélectionner

$("#visited li")


ca fait 2 jours que je retourne le code dans tout les sens...lol

Code : Tout sélectionner

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js "></script> <script> setTimeout(function() { $(document).ready(function(){ $('#content ul').ready(function(){ var visited = $("#visited li").val(); $.post('post_receiver.php', {visited:visited}, $(this).serialize(), function(data){ // show the response $('#visited').html(data); }) .fail(function() { // just in case posting your form failed alert( "Posting failed." ); }); // to prevent refreshing the whole page page return false; }); }); }, 5000); //timeout end </script>
comment doit je faire pour recuperer les <li> s'il vous plait

car pour l'instant avec ce code voici le output de la console

Code : Tout sélectionner

array(1) { ["visited"]=> string(1) "0" }
encore un grand merci , et desoler pour la pagaille ...

Eléphanteau du PHP | 19 Messages

02 nov. 2018, 13:52

bonjour, juste pour dire que j'ai trouvé la solution du problème ...

Code : Tout sélectionner

var visited = $("#visited").val();
en

Code : Tout sélectionner

var visited = $("#visited").text();
3 jours de prises de tête pour une connerie comme celle-là :)

merci pour votre aide en tout cas