@Haeresis
Oui ma proposition se focalise essentiellement sur PHP.
@fdolin
Le “proxifiage” concerne surtourt la partie PHP.
Côté JS, un simple appel standard Ajax suffit.
En vanillaJS : ya
Le point 2 tu l’as deja dans ton exemple ci-dessus.
Le point 3
tu l’as deja aussi puisque tu enregistre la réponse XML dans un fichier.
Par déduction, si derrière c’est to JS qui veut récupérer le contenu du XML,
tu n’a aucun intéret a enregistrer le XML dans un fichier (ici Results.xml).
Tu le renvoie “dans la foulée”. Par cela je mexplique :
Tu vas charger le XML sous forme d’un objet XML manipulable.
avec simple_xml_load_string
ex:
$responseXML = $sClient->ActionGetStockBartByEcom($param);
if ($response){
$oResponseArray = @json_decode(@json_encode($oResponseXML),1)
Ensuite pour extraire les données et produire ton propre JSON,
- $oResponseArray contient une version “tableau” du XML d’origine. Plus facile a manipuler, traverser, extraire.
tu peux construire un tableau a l’image de ce que tu voudrais renvoyer en JSON.
Pour chaque element de tableau, tu extrais et fais correspondre les données issues de l’objet $oResponse.
Une fois que ton tableau est fait, tu le renvoie sous format JSON avec : json_encode(tableau);
et le header application/json qui va bien. Enfin sauf si tu utilise un micro framework qui fait le boulot pour toi.
Après t’as plus qu’a faire l’appel Ajax en JS et hop tu recois le JSON sous forme d’un objet…JSON
et t’en fais ce que tu veux.
Le point 1 :
Dans le monde PHP, tu peux utiliser un micro-framework pour monter une API web facilement :
Slim : https://www.slimframework.com/
Lumen (basé sur Laravel) : https://lumen.laravel.com/
C’est notamment lui qui va faciliter l’envoi de la réponse JSON bien formatée (avec les bons, headers, encodage, etc…)