试图将javascript数组传递给Python
我试图将一些javascript数组传递给Flask以设置我的模板页面,但我在输出页面中得到的只是“在主机文本框中,您输入了:无”消息,下面是我的代码:试图将javascript数组传递给Python,javascript,python,html,flask,Javascript,Python,Html,Flask,我试图将一些javascript数组传递给Flask以设置我的模板页面,但我在输出页面中得到的只是“在主机文本框中,您输入了:无”消息,下面是我的代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Conte
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script src="static/script.js"></script>
<title>Comms Checker</title>
</head>
<body>
<form name="ResultPage" action = "passFails.html" onsubmit="return validateTestPage()" method="post">
Number of Hosts/Ports:<br><input type="text" id="Number"><br/><br/>
<a href="#" id="filldetails" onclick="addFields()">Enter Comms Details</a>
<div id="container"/>
</form>
</body>
</html>
最后,上面的python脚本应该将数据传递到最后一个HTML页面passFails.HTML,在那里可以打印数组/列表中的所有值。
passFails页面如下所示
from flask import Flask, render_template, request
import json
import jsonify
app = Flask(__name__)
@app.route('/Results')
def Results():
return render_template('Results.html')
@app.route('/passFails')
def passFails():
data = request.args.get('host')
print("The Value in passFails is :%s " % data)
return render_template('/passFails.html', Value=data)
if __name__=='__main__':
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>In the Host text box, you entered: {{Value}}</h1>
</body>
</html>
标题
在主机文本框中,输入:{{Value}
我只是想知道为什么javascript部分的代码无法将列表传递给python,或者python脚本中是否有任何错误导致接收数组时出现问题?
任何帮助都将不胜感激。如果您在
passFails
中添加调试打印作为第一行,您将看到如下内容:
def passFails():
print(request.args)
# Out: ImmutableMultiDict([('host[]', '1'), ('host[]', '2'), ('host[]', '3')])
正如您所说,您试图传递一些javascript数组,因此您的请求看起来像:
$.get(
url="/passFails",
data={host: [1,2,3]},
success = function (data) {
alert('page content: ' + data);
}
);
并将其转换为请求url(您可以在浏览器调试控制台中看到,也应该看到),如:
http://localhost/passFails?host[]=1&host[]=2&host[]=3
因此,在
主机
键上找不到您的值。为了让它发挥作用,你可以使用它。另一个选项是在发送请求之前将数组中的myHost
值序列化为JSON字符串,这样您就可以以request.args.get['host']
的形式访问该值,但您必须从Flask中的JSON表示反序列化该值。如果在密码中添加调试打印作为第一行,则会失败,你会看到这样的情况:
def passFails():
print(request.args)
# Out: ImmutableMultiDict([('host[]', '1'), ('host[]', '2'), ('host[]', '3')])
正如您所说,您试图传递一些javascript数组,因此您的请求看起来像:
$.get(
url="/passFails",
data={host: [1,2,3]},
success = function (data) {
alert('page content: ' + data);
}
);
并将其转换为请求url(您可以在浏览器调试控制台中看到,也应该看到),如:
http://localhost/passFails?host[]=1&host[]=2&host[]=3
因此,在主机
键上找不到您的值。为了让它发挥作用,你可以使用它。另一个选项是在发送请求之前将数组中的myHost
值序列化为JSON字符串,这样您就可以以request.args.get['host']
的形式访问该值,但您必须从Flask中的JSON表示对其进行反序列化。在python文件中,您需要添加方法=['POST'],所以你的应用程序路径应该是:@app.route('/passFails',methods=['POST'])
,然后你可以检查
如果request.method==“POST”:
#编写代码
在python文件中,您需要添加方法=['POST'],因此您的应用程序路由应该是:@app.route('/passFails',方法=['POST'])
,然后您可以检查
如果request.method==“POST”:
#编写代码
更改.get
至.getlist
request.args.getlist('host')
和平更改。获取
到。获取列表
request.args.getlist('host')
Peace最后,我找到了答案,我所要做的就是在HTML文件中包含以下脚本标记,以便javascript使用$.get()函数向python发送数据。这就是问题所在,并已成功解决:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
感谢大家分享您的回答。最后,我找到了答案,我所要做的就是在HTML文件中包含以下脚本标记,以便javascript使用$.get()函数向python发送数据。这就是问题所在,并已成功解决:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
感谢大家分享您的回答。我尝试使用request.args.getlist('host'),但输出仍然是一对空括号“[]”,不确定我还能做什么。嗯。那你可以试试。我试过使用request.args.getlist('host'),但输出仍然是一对空括号“[]”,不确定我还能做什么……哦。嗯。你可以试试。我试过使用request.args.getlist('host')和request.args.getlist('host[]),输出仍然是空括号“[]”。我不确定序列化和反序列化是如何工作的……我注意到javascript中有这样的内容:$.get(url=“/passFails”,data={host:myHost},success=function(data){alert('page content:'+data);});当您将鼠标悬停在$上时,开头的$显示为“未解析变量或类型$”。我尝试使用request.args.getlist('host')和request.args.getlist('host[]),输出仍然是空括号“[]”。我不确定序列化和反序列化是如何工作的……我注意到javascript中有这样的内容:$.get(url=“/passFails”,data={host:myHost},success=function(data){alert('page content:'+data);});当您将鼠标悬停在$上时,开头的$显示为“未解析变量或类型$”。我找到了问题的根源,但不确定如何解决。下面是我在检查页面元素时得到的结果:ReferenceError:$is not defined script.js:116:3 checkVal onclick,而不是我所期望的列表“myHost”。因此,问题的根源在于代码的JAVASCRIPT部分,我试图将列表发送到Python(Flask),在那里我得到$not defined错误,导致它无法将数据发送到Python,因此是一对空括号,而不是列表。我找到了问题的根源,但不确定如何解决。下面是我在检查页面元素时得到的结果:ReferenceError:$is not defined script.js:116:3 checkVal onclick,而不是我所期望的列表“myHost”。因此,问题的根源在于代码的JAVASCRIPT部分,我试图将列表发送到Python(Flask),在那里我得到$not defined错误,导致它无法将数据发送到Python,因此是一对空括号,而不是列表。有什么想法吗