Подтвердить что ты не робот

Запустите 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. Что мне здесь не хватает?

4b9b3361

Ответ 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