Я пытаюсь получить вывод из скрипта python и поместить его в таблицу в html моего вишневого приложения.Как вызвать скрипт python с ajax в приложении cherrypy
Пример приложение:
import string, os
import cherrypy
file_path = os.getcwd()
html = """<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>CCMF</title>
<link rel='shortcut icon' type='image/x-icon' href='img/favicon.ico' />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
function b1() {
var request = $.ajax({
url: "b1.py",
type: "POST",
dataType: "text"
});
request.done(function(msg) {
$("#output").html(msg);
});
request.fail(function(jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
}
</script>
</head>
<button onclick="b1()">call b1.py</button>
...
<td id = "output"; style="vertical-align: top; height: 90%; width: 100%;">
<--output goes here -->
</td>
...
</html>
"""
class ccmf(object):
@cherrypy.expose
def index(self):
return html
if __name__ == '__main__':
cherrypy.server.socket_host = "127.0.0.1"
cherrypy.server.socket_port = 8084
config = {
"/img": {
"tools.staticdir.on": True,
"tools.staticdir.dir": os.path.join(file_path, "img"),
}
}
cherrypy.tree.mount(ccmf(), "/", config=config)
cherrypy.engine.start()
cherrypy.engine.block()
и вот пример питона скрипт b1.py:
def b1():
op = "ajax b1 pushed"
print op
return op
b1()
Аякс прибудет называеться но возвращает предупреждение отказов. Я пробовал GET, POST, «текст», «html», b1.py находится в одном каталоге, без радости. Все в настоящее время работают в моем локальном поле.
Подсказки приветствуются!
Я думаю, что ваш дизайн испорчен. Попробуйте сделать функцию b1 функцией, возвращающей HTTPResponse. – Dan
Это может быть правдой, но, похоже, это тоже проблема пути. Если я посмотрю в разделе Инструменты> Веб-разработчик> Netwok в Firefox, когда я нажимаю кнопку, я получаю 404. Я попробовал добавить каталог cgi-bin и поместить туда b1.py и добавил «/ cgi-bin»: { «tools.staticdir.on»: True, «tools.staticdir.dir»: os.path.join (file_path, «cgi-bin») в конфигурацию, но он все еще считает cwd/cgi-bin/b1. py не существует. – user3891489
ОК, я бросил черри и я обслуживаю html-файл из apache. Теперь, когда я нажимаю кнопку, я получаю содержимое b1.py вместо того, чтобы запускать его и выдавать правильный результат. Один шаг за один раз. – user3891489