javascript - 将元组的python列表发送到JavaScript数组不起作用
问题描述
我正在尝试将元组的 python 列表发送到 javascript 数组,但由于某种原因,它不起作用。
蟒蛇代码
import json
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def stock_table():
if request.method == "POST":
data = [('abc','efg','hij', "klm"), ('nop','qrs','tuv', "wxyz")]
string_data="'"
string_data+=str(json.dumps(data))
string_data+="'"
return render_template('index.html', result=string_data)
else:
return render_template('index.html')
if __name__ == '__main__':
app.run()
string_data
出来为: '[["abc", "efg", "hij", "klm"], ["nop", "qrs", "tuv", "wxyz"]]'
javascript代码
<!DOCTYPE html>
<html>
<body>
<h3> Show stock pie graph </h3>
<form action="{{ url_for('stock_table') }}" method="post">
Enter User Name: <input type = "text" name= "user_name" />
<input type="submit" value="Go!">
<p id="result"></p>
</form>
<script>
var array_start ="{{ result }}";
arrayOfArrays = JSON.parse(array_start);
document.getElementById("result").innerHTML = arrayOfArrays;
</script>
</body>
</html>
当我运行程序时,它不会显示任何错误,但不会显示结果。
我还尝试使用我在javascript中制作的字符串,只需复制它就可以了!
我认为问题在于,当元组中包含一个字符串时,JSON.parse 函数不适用于我从 python 发送的数据,而当它只是数字时它工作得很好。
任何帮助,将不胜感激!
解决方案
我不确定你在做什么。
您可以使用jinja2 过滤器将数据转换为符合 JSON 标准的字符串。注意引号也很重要。
@app.route('/', methods=['GET', 'POST'])
def stock_table():
data = []
if request.method == "POST":
data = [('abc','efg','hij', 'klm'), ('nop','qrs','tuv', 'wxyz')]
return render_template('index.html', data=data)
<p id="output">{{ data | tojson | safe }}</p>
<p id="result"><p>
<script type="text/javascript">
const data = '{{ data | tojson | safe }}';
console.log(JSON.parse(data));
document.getElementById('result').innerHTML = data;
</script>
如果你想使用 AJAX,你可以在你的路由中使用jsonify来响应 JSON 格式的结果。你可以在这里找到一个例子。可能您应该在那里使用表单的提交事件。
推荐阅读
- visual-studio-code - 如何突出显示vscode中的单元格?
- powerbi - 将行的一个值更改为列
- swift - 具有关联值的枚举作为另一个枚举的关联值(嵌套关联值)
- java - 带有 JSch 的 SSH 用于具有中间输出的多个命令
- java - JUnit - 共享不同实现的测试
- d3.js - 创建具有不同堆栈级别的堆积条形图
- reactjs - 如何使用条件语句渲染 JSX 元素?
- c - 多个值的 OpenMP argmin 减少
- javascript - 使用 jQuery 从邻居输入元素中获取值
- android - firebase on()/addValueEventListener 需要多少资源?