Запустите Python script из AJAX или JQuery
У нас есть требование запуска скриптов python из Javascript. Мы должны передать входную строку в python script в качестве аргумента и отобразить вывод python на нашей веб-странице.
Вот код Python, этот код отлично работает, когда я запускаю его в своем ящике linux: ./sample.py 12345
, дает вывод 12345
и ./sample.py
будет отображать 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
Как мне получить доступ к "параметру" из вызова ajax в вышеуказанном python и использовать это значение в качестве аргумента?
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);
});
Любая помощь будет принята с благодарностью.
ИЗМЕНИТЬ
Как я уже сказал, я пытаюсь заставить свой код работать с 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)
Всякий раз, когда выполняется вызов Ajax, ответ: [object HTMLDivElement], при открытии в Firebug отображает весь текст python script. Что мне здесь не хватает?
Ответы
Ответ 1
Ваш Ajax-вызов будет веб-запросом (http)
к скрипту Python, поэтому вашему скрипту Python необходимо прослушивать порт для таких запросов и отвечать на них.
Вышеупомянутый метод рекомендуется, чтобы использовать простой веб-сервер внутри вашего примера, Py или вы можете использовать существующие, такие как Flask (или многие другие).
К вашему сведению - для вашей простой задачи я бы не рекомендовал Django (это большой и тяжелый веб-фреймворк с множеством колокольчиков, которые вам не нужны).
Ответ 2
Получение данных из полей должно выполняться следующим образом:
# Get data from fields
output = data.getvalue("param")
Кроме того, реализовано, что при попытке выполнить проблемы с символами ^ M, которые я разрешил с помощью редактора vi
.
Ответ 3
В полной прозрачности я участвую в этом репозитории GitHub. Я смог решить эту проблему, используя триггеры WayScript AJAX:
См. GitHub Repo для получения инструкций: https://github.com/wayscript/ajax-to-python-example