javascript - request..args.get 什么都不存储
问题描述
我有以下代码。这些代码应该获取用户的输入并在 python 中处理。所有这些都应该在同一个网页中运行。
我已经尝试了所有可能的功能flask.request
。
在python文件里面,
app.route("/",methods=['GET','POST'])
def homepage():
return render_template('index.html')
@app.route("/detection",methods=['GET'])
def detections():
code=request.args.get('code',default='',type=str)
print(code)
ide=Lang_Dec(code)
lang=ide.get_lang()
print(lang)
return jsonify({'html':lang})
在 html 文件中,
<body>
<div class="container">
<div class="row">
<div class="col-lg-8">
<textarea class="codemirror-textarea" id='code'></textarea>
<button type="button" class="btn btn-primary btn-lg" id='butt'>Guess the function!</button>
</div>
<div class="col-lg-4">
<div class="card" >
<h5 class="card-header">Detected Language</h5>
<div class="card-body">
<h6 class="card-title" id='lang'></h6>
<p class="card-text">Percentages</p>
</div>
</div>
<div class="card text-white bg-dark mb-3" >
<h5 class="card-header">IDE OUTPUT</h5>
<div class="card-body">
<p class="card-text" id='ide'></p>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
var code = $(".codemirror-textarea")[0];
var editor = CodeMirror.fromTextArea(code, {
lineNumbers : true,
theme : "duotone-dark",
});
});
</script>
<script>
$(document).ready(function(){
$('#butt').click(function(){
var code=$('#code').val();
$.ajax({
url:"/detection",
type: "get",
data:{code:code},
success:function(response){
$('#lang').html(response.html);
},
error: function(xhr){
//do smtg
}
});
});
});
</script>
</body>
Python 应该textarea
从-
.
解决方案
这不是 Python 或 Flask 问题,您没有将 textarea 包装在表单中,并且CodeMirror 文档建议以下内容(强调我的):
CodeMirror.fromTextArea(textArea: TextAreaElement, ?config: object)
此方法提供了另一种初始化编辑器的方法。它需要一个 textarea DOM 节点作为第一个参数,一个可选的配置对象作为第二个参数。它将用 CodeMirror 实例替换 textarea,并连接该 textarea 的表单(如果有)以确保在 提交表单时将编辑器内容放入 textarea 。textarea 中的文本将为编辑器提供内容。
尝试用一个简单的表格确认这一点:
<form action='detection'>
<textarea id='code' name='code'></textarea>
<button type="submit">Go!</button>
</form>
在本地服务,提交带有一些随机文本输入的表单会产生以下结果:
127.0.0.1 - - [21/Jan/2019 22:50:04] “GET /detection?code=dfgdfgdfgggggggggg HTTP/1.1”
所以在你的情况下,看起来你需要cm.save()
在你的 Ajax 请求之前调用,至少这是快速浏览文档对我的建议。
因此,对您的代码进行快速而肮脏的修复将如下所示:
<script>
$(document).ready(function(){
var code = document.getElementById('code');
var editor = CodeMirror.fromTextArea(code, {
lineNumbers : true,
theme : "duotone-dark",
});
$('#butt').click(function(){
editor.save(); // this is where the textarea content gets updated
var c=$('#code').val();
$.ajax({
url:"/detection",
type: "get",
data:{code:c},
success:function(response){
$('#lang').html(response.html);
},
error: function(xhr){
//do smtg
}
});
});
});
</script>
推荐阅读
- python - 无法将 Colab 的输出存储到 Excel 中
- python - 使用 Python 设置状态回调 URL - Flask
- c++ - 我可以在 C++ 中暂时禁用 random / srand 吗?
- optaplanner - 如何使构建启发式阶段在过度约束的规划中分配所有实体?
- google-sheets-formula - 带 IF 的数组公式
- angular - 如何在primeng行扩展表中使用全局搜索?
- c# - 命名空间“System.Data”中不存在类型或命名空间名称“SQLite”(您是否缺少程序集引用?) C# 错误
- r - python (AWS EC2) 中的 Rpy2:语法错误:_cdata:FFI.CData
- php - Visual Studio Code php intelipense 问题
- sql - 用于调查单行答案的 SQL Server 动态数据透视表