Nous avons besoin d'exécuter des scripts python à partir de Javascript. Nous devons passer une chaîne d'entrée au script python en tant qu'argument et afficher la sortie python sur notre page Web.
Voici le code Python, ce code fonctionne bien quand je lance ceci dans ma boîte Linux: ./sample.py 12345
, donne le résultat 12345
et ./sample.py
afficherait no argument found
#!/usr/bin/env python
import os
import sys
if len(sys.argv) > 1:
output = sys.argv[1]
else:
output = "no argument found"
print "Hello World!!!"
print output
Comment accéder au paramètre de l'appel ajax dans python ci-dessus et utiliser cette valeur comme argument?
Javascript:
$.ajax({
type: 'POST',
url: "scripts/sample.py",
data: {param: xyz}, //passing some input here
dataType: "text",
success: function(response){
output = response;
alert(output);
}
}).done(function(data){
console.log(data);
alert(data);
});
Toute aide serait grandement appréciée.
MODIFIER
Comme suggéré, j'essaye de faire fonctionner mon code en utilisant CGI.
#!/Python34/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
data= cgi.FieldStorage()
# Get data from fields
output = data["param"]
# This will print to stdout for testing
print("Hello World!!!")
print(output)
Chaque fois que l'appel Ajax est exécuté, la réponse est: [objet HTMLDivElement], une fois ouvert dans Firebug, affiche le texte intégral du script python. Qu'est-ce que j'oublie ici?
Votre appel Ajax sera une requête Web (http)
au script python. Votre script python doit donc écouter sur le port ces requêtes et y répondre.
La méthode susmentionnée est recommandée, utilisez simple Web Server à l'intérieur de votre échantillon, py ou vous pouvez utiliser un existant tel que Flask (ou beaucoup d'autres).
FYI - Pour votre simple tâche, je ne recommanderais pas Django (c'est un framework web gros et lourd avec beaucoup de cloches dont vous n'avez pas besoin).
Obtenir les données des champs doit être fait comme suit:
# Get data from fields
output = data.getvalue("param")
En outre, j'ai constaté qu'il y avait ^ M problèmes de caractères lors de l'exécution, problème que j'ai résolu à l'aide de l'éditeur vi
.
En toute transparence, je suis un contributeur à ce dépôt GitHub. J'ai pu résoudre ce problème en utilisant les déclencheurs WayScript AJAX:
Voir GitHub Repo pour les instructions: https://github.com/wayscript/ajax-to-python-example