在weppy如何使用ajax()从javascript发送数据到python

时间:2017-01-22 03:42:49

标签: javascript python ajax weppy

我正在尝试通过ajax向我的weppy后端发送一个id号码 我尝试过尽可能多的事情,但我确定我不明白该怎么做。

我在点击时从HTML页面收集了一个ID,并希望将其发送到服务器脚本 现在我的ajax看起来像

$(.testclick).click(function(e){
  var idnum = e.target.id;
  ajax("{{=url('post')}}", [], ':eval');
});

我已经尝试在多个地方包含idnum变量,希望能够找到它而没有这样的运气

帖子功能看起来像

@app.route()
def post(idnum):
  idnum = idnum
  print(idnum)
  return

现在我只是想让它工作它除了打印到控制台atm之外什么都不做呢

提前感谢!

2 个答案:

答案 0 :(得分:1)

weppy docs开始:

  

ajax helper异步调用url,传递字段输入的值,其名称等于列表中的一个名称,然后将响应存储在标记的innerHTML中,其id等于target。   第三个参数也可以是:eval字符串,它导致通过JavaScript评估服务器返回的字符串。

如果要使用该帮助程序对ajax请求使用任意值,则需要将其放在请求的URL中,但在此之前,您需要在路由上接受url variable

@app.route('/click/<str:element_id>')
def click(element_id):
    return 'alert("clicked on ' + element_id + '");'

然后在HTML方面:

$(".testclick").click(function(e){
    ajax("{{=url('click')}}/" + e.target.id, [], ':eval');
});

请注意,weppy提供的ajax帮助程序旨在用于呈现页面组件内的内容或生成要评估的javascript代码。

如果您需要向后端发送和获取任意数据,请考虑使用jQuery ajax方法和json数据。

答案 1 :(得分:0)

为了从javascript运行python脚本,您可以使用CGI。这是javascript代码:

$(.testclick).click(function(e){
var reqobj;
reqobj = {idnum: e.target.id}

// AJAX
var response = $.ajax({
type: "POST",
url: "/script/sample.py",
data: reqobj

});
}

Python脚本(sample.py):

import cgi, cgitb
data= cgi.FieldStorage()

# Get data from fields
input = data["idnum"]

print(input)

要使两个脚本都正常工作,您需要拥有一个Web服务器并将其配置为执行python脚本。 这是[链接] https://www.linux.com/blog/configuring-apache2-run-python-scripts