Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图将javascript数组传递给Python_Javascript_Python_Html_Flask - Fatal编程技术网

试图将javascript数组传递给Python

试图将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

我试图将一些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="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,因此是一对空括号,而不是列表。有什么想法吗