Bonjour j'ai regarder pas mal de tuto sur Ajax mais j'en ai pas trouver qui répond à mon problème:
Problématique : J'aimerai utiliser un script python sur mon site en localhost créer avec Symfony, j'ai vu qu'il fallait utiliser Ajax pour éviter à l'utilisateur qu'il recharge la page.
examen.html.twig
{% extends 'base.html.twig' %}
{% block javascripts %}
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</script>
{% endblock %}
{% block body %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<div class="card border mb-3" style=" margin-left:5%; margin-right: 5%">
<div class="card-header" style="background-color: midnightblue;">Consultation de l'examen
{{examen.id}}
du patient :
{{examen.idpatient.prenomp}}
{{examen.idpatient.nomp}}</div>
<div class="card-body">
{% if examen.lienirm != null %}
<img style="max-width:512px; max-height:512px; float: left" src='{{ asset('/irm/') }}{{examen.idpatient.id}}_examen_{{examen.id}}_irm.png'/>
{% else %}
<div class="card text-white bg-dark mb-3" style="max-width: 20rem;float: left;; margin-right: 5%">
<div class="card-header">Ajouter une IRM</div>
<div class="card-body">
<h4 class="card-title">Paramètres :</h4>
<p class="card-text">
<div class="form-group">
<label for="formFile" class="form-label mt-4">Insérer l'image</label>
<input class="form-control" type="file" id="formFile">
</div>
</p>
</div>
</div>
{% endif %}
{% if examen.lienradio != null %}
<img style="max-width:512px; max-height:512px; float: left" src='{{ asset('/radio/') }}{{examen.idpatient.id}}_examen_{{examen.id}}_radio.png'/>
{% else %}
<div class="card text-white bg-dark mb-3" style="max-width: 20rem;float: left;; margin-left: 5%">
<div class="card-header">Ajouter une RADIO (avec électrode)</div>
<div class="card-body">
<h4 class="card-title">Paramètres :</h4>
<p class="card-text">
<div class="form-group">
<label for="formFile" class="form-label mt-4">Insérer l'image</label>
<input class="form-control" type="file" id="formFile">
</div>
<input class="script" type="button" id='script' onclick="script_py()" name="scriptbutton" value=" Run Script ">
</p>
</div>
</div>
<script>
function script_py(){
let request =
$.ajax({
type: "GET", //Méthode à employer POST ou GET
url: "../../php/script.php", //Cible du script coté serveur à appeler
beforeSend: function () {
//Code à appeler avant l'appel ajax en lui même
}
});
request.done(function (output) {
//Code à jouer en cas d'éxécution sans erreur du script du PHP
alert('OK');
});
request.fail(function (error) {
//Code à jouer en cas d'éxécution en erreur du script du PHP ou de ressource introuvable
});
request.always(function () {
//Code à jouer après done OU fail quoi qu'il arrive
});
}
</script>
{% endblock %}
Pour l'instant mon script php est juste un echo 'Hello world' pour les test mais j'ajouterai dans un second temps la function exec() pour appeler une ligne de commande pour qu'il execute mon script.
Que mettre dans le controleur de ma classe ? Pour l'instant j'ai créer quelque chose comme ça
/**
* @Route("/php/script.php", name="script_py")
*/
public function script_python(): Response
{
**** return une réponse du fichier php ?
}
sachant que cette fonction veut toujours return un template
Bonjour si tu ne c'est pas quoi mettre dans le controlleur de la requête AJAX, c'est peut être que tu n'as pas besoin de communiqué une information avec le serveur à cet endroit de ton application.
Tu as besoin d'une requête AJAX si tu veut que le serveur te donne une donnée où que tu veut en envoyé une au serveur sans devoir chargé une page HTML entière.
Lorsque le serveur veut renvoyé une réponse à une requête ajax il et commun d'utilisé le format JSON, (facilement compréhensible par Javascript)
Symfony fournit un moyen de construire une JSON Response via sont composant HttpFoundation.
Comme dit par mon VDD, le retour doit se faire en json du moins dans la majorité des cas.
Je l'interroge toujours sur l'intérêt de lancer un script php qui va lancer l'interpréteur python qui va exécuter un script python ?
Sur le plan architecture logicielle et technique c'est quand même un empilement de couches donc consommation de ressources matériels telles que processeur, mémoire, io, etc ... c'est quand même aussi la plus part du temps une faille de sécurité ..
=> que peut bien faire un script python qui ne soit pas codable directement en php ?
=> que peut bien faire un script python qui ne soit pas codable directement en php ?
A+
- Edité par monkey3d il y a environ 21 heures
Bonjour c'est un script de machine learning donc assez complexe pour le mettre dans du php, je dois juste envoyer au serveur l'information d'utiliser le script python, la seule réponse que j'attend c'est qu'il me dise quand le script est fini. Peut être que l'ajax n'est pas la meilleure solution ?
Entre autres avec, je fais de l'analyse de langage naturel pour un assistant ... sans utiliser les api des GAFA ou du python !
Jusqu'à ce jour et je pense avoir développé pas mal de choses, je n'ai jamais eu besoin d'empiler du php et du python.
Comprenons-nous, je ne dénigre pas du tout python mais par contre je suis très réservé sur l'empilement d'interpréteur de langage différent dans une appli web pour les raisons indiquées ci-dessus.
Quand au besoin qui se précise, remonter une fin de process python via un exec en php lancé par de l'ajax me semble une solution tortueuse.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
suggestion de présentation.