Blog de Jesus Forain Blog de Jesus Forain
Blog personnel de Jesus Forain où les principaux sujets sont l'informatique, la technologie, le spatial mais aussi divers sujets.
Site auto-hébergé sur un mini PC avec une connexion fibre
Rechercher & filtrer
Filtrer par année / mois
Derniers commentaires
Raspberry Pi en récepteur audio Bluetooth (A2DP audio sink)
Avatar par défaut
Gregouille (non inscrit)
dimanche 26 janvier 2025 13:46

Bonjour! J'ai enfin réussi ! Le problème résidait dans bluez, malgré les multiples distros que j'ai testé j'avais toujours un conflit quelque part, et là après une énième réinstalle propre et de longues recherches sur toutes les l[...]

Demander une adresse IP full stack chez Free pour avoir tous les ports
Avatar de Jesus Forain
Jesus Forain
samedi 25 janvier 2025 11:14

Le problème doit venir du réseau Free. Si c'était le VPN de l'entreprise ça ne fonctionnerait pas quelque soit le fournisseur. Et l'IP partagée n'empêche pas l'utilisation d'un VPN, c'est surtout utile si comme moi tu héberges un serveur web et que tu [...]

Demander une adresse IP full stack chez Free pour avoir tous les ports
Avatar par défaut
Steph (non inscrit)
jeudi 23 janvier 2025 12:21

Bonjour, Merci pour ton blog et toutes ces infos. J'ai un soucis un peu tricky. Depuis quelques semaines (impossible de me rappeler quand exactement), lorsque je suis en télétravail via le VPN de mon entreprise (via ma freebox pop), j'ai des erreurs reseau (fermeture de socket) entre l[...]

Starship flight 7
Avatar de Jesus Forain
Jesus Forain
lundi 20 janvier 2025 17:38

Le décollage et le rattrapage du booster vu par les caméras de NASASpaceflight.   ▶  

Starship flight 7
Avatar de Jesus Forain
Jesus Forain
vendredi 17 janvier 2025 18:15

D'après un tweet d'Elon Musk, l'explosion serait due à une fuite d'oxygène ou de carburant au dessus du pare-feu d'un des moteurs. Cette fuite trop importante a causée une surpression et serait la cause de l'explosion. Le moment exact de l'explosion à 3'11": [...]

Starship flight 7
Avatar de Jesus Forain
Jesus Forain
vendredi 17 janvier 2025 00:36

Voilà comment a fini le Ship au niveau des Îles Turques-et-Caïques juste à côté de Cuba. Vidéo 1   ▶  

Starship flight 7
Avatar de Jesus Forain
Jesus Forain
vendredi 17 janvier 2025 00:08

Malheureusement, juste après le rattrapage du booster et ce grand moment d'émotions, le Starship a été perdu. C'était le premier vol de la version 2, on devrait en apprendre davantage dans les prochains jours sur ce qu'il s'est passé. Il ne faut pas oublier [...]

Starship flight 7
Avatar de Jesus Forain
Jesus Forain
jeudi 16 janvier 2025 23:45

Rattrapage du booster réussi!

Starship flight 7
Avatar de Jesus Forain
Jesus Forain
jeudi 16 janvier 2025 20:48

C'est confirmé, un petit avion de la NASA est en vol depuis quelques instants au large de l'Australie pour suivre la rentrée atmosphérique du Starship. Lien de suivi sur Flightradar 24.  

Raspberry Pi en récepteur audio Bluetooth (A2DP audio sink)
Avatar par défaut
Gregouille (non inscrit)
mercredi 8 janvier 2025 17:06

Merci pour ton retour, je vais faire des recherches dans ce sens. 

Transférer en AJAX un tableau de données entre client et serveur

- 212 vues

Quand on utilise de l'AJAX pour son site web, on a souvent besoin de transférer plusieurs variables entre client et serveur mais le problème est qu'entre les 2, c'est une chaîne de caractères qui cicule. Comment récupérer le résultat d'une fonction et son code retour par exemple?

On peut utiliser du JSON mais le problème c'est que si les fonctions pour le traiter sont diponibles en PHP côté serveur, elles ne le sont pas en Javascript côté client, il faut alors utiliser des bibliothèques Javascript pour le traiter et je voudrais bien me passer de l'utilisation d'une bibliothèque.

L'astuce que j'ai trouvée consiste à utiliser un caractère qui servira de séparateur entre les données. Bien sur, ce caractère ne devra pas être alphanumérique, si le séparateur était la lettre A, il y aurait de fortes chances de la retrouver dans les données à transmettre et ça poserait problème pour savoir si'il s'agit du séparateur ou des données.
On utilisera donc les caractères spéciaux qu'on trouve au début de la table ASCII, ces caractères ont peu de chance de se retrouver dans les données, il faudra là aussi éviter certains caractères comme les retours chariots, si les données sont du texte sur plusieurs lignes, il y en aura forcément.

Dans notre exemple, on va utiliser le caractère ASCII N°29, 0x1D en hexa, séparateur de groupe ou GS.

On a besoin déchanger ces 3 variables:

  • 'Texte de la page'
  • $uneVariable
  • $uneAutreVariable

Échange serveur --> client

Côté serveur (PHP), on concatène les données de façon à avoir une chaîne, \x1D est le code ASCII en hexa du caractère séparateur:

 echo 'Texte de la page'."\x1D".$uneVariable."\x1D".$uneAutreVariable;

Côté client (Javascript), on éclate la chaîne avec split, String.fromCharCode(29) retourne le caractère ASCII à partir de son code décimal:

 var donneesServeur = xhr.responseText.split(String.fromCharCode(29));

La variable serverData est un tableau:
[0] = 'Texte de la page'
[1] = contenu de $uneVariable
[2] = contenu de $uneAutreVariable

Échange client --> serveur

C'est le même principe que précédament mais à l'envers:

Côté client:
On cancatène les données avec le caractère séparateur entre.

 var chainePourLeServeur = 'Texte de la page' + String.fromCharCode(29) + uneVariable+String.fromCharCode(29) + uneAutreVariable;

Côté serveur:
On utilise explode pour éclater la chaîne en tableau.

 $donneesClient = explode("\x1D", $_POST['donnees']);

La variable $donneesClient est un tableau:
[0] = 'Texte de la page'
[1] = contenu de uneVariable
[2] = contenu de uneAutreVariable

On peut aussi transmettre des tableaux à plusieurs dimentions en choisisant plusieurs caractères séparateur.

 

partager sur Facebook
COMMENTAIRES
Envoyer un commentaire
chargement de l'éditeur en cours...
Envoi d'images pour les insérer dans le message
Cliquez sur le bouton "insérer l'image" pour l'ajouter à votre message, le fond de l'image passe en vert indiquant qu'elle est ajoutée. Les images non insérés sont supprimées.

Envoi de fichiers pour les télécharger

Attention! vous n'êtes pas connecté, vous postez en mode invité.