使用Flask通过AJAX传递一个字段
Pass just one field via AJAX with Flask
我有一个非常简单的HTML表单,只有一个<input type='text'>
字段,一个电子邮件地址,我需要通过AJAX传递回Python脚本。我似乎无法接收到另一端的价值。(因为只有一个字段,所以可以避免所有JSON编码/解码吗?)
代码如下:
from flask import Flask, render_template, request, json
import logging
app = Flask(__name__)
@app.route('/')
def hello():
return render_template('index.htm')
@app.route('/start', methods=['POST'])
def start():
# next line outputs "email=myemail@gmail.com"
app.logger.debug(request.json);
email = request.json['email'];
# next line ALSO outputs "email=myemail@gmail.com"
app.logger.debug(email);
return json.dumps({ 'status': 'OK', 'email': email })
if __name__ == "__main__":
app.run()
以及从HTML端发送AJAX的Javascript——
$( "form" ).on( "submit", function( event ) {
event.preventDefault();
d = "email=" + $('#email').val(); // this works correctly
// next line outputs 'sending data: myemail@gmail.com'
console.log("sending data: "+d);
$.ajax({
type: "POST",
url: "{{ url_for('start') }}",
data: JSON.stringify(d),
dataType: 'JSON',
contentType: 'application/json;charset=UTF-8',
success: function(result) {
console.log("SUCCESS: ");
// next line outputs 'Object {email: "email=myemail@gmail.com", status: "OK"}'
console.log(result);
}
});
});
JSON。stringify用于将对象转换为json格式的字符串,但是您没有对象,只有字符串。试试这个:
var d = { email: $('#email').val() };
JSON.stringify(d)
现在将把它转换成json格式的字符串:
{email: "myemail@gmail.com"}
,可以用烧瓶解析。
不使用JSON:
var d = { email: $('#email').val() };
...
// AJAX
data: d,
success: ...
这将把{email: "myemail@gmail.com"}
变成email=mymail@gmail.com
,并将其作为POST请求的主体发送。在Flask中,使用request.form['email']
相关文章:
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- Angular ng repeat order将多个字段作为一个字段
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 可以't无法将一个字段复制到另一个字段
- 如何隐藏&使用jQuery禁用依赖于另一个字段值的字段
- 我有一个字段计算,如果结果低于 60,则需要显示最小值
- 根据Rails4中的一个字段自动填充表单
- 在 Jquery ajax 中,在一个字段中输入时获取详细信息
- 在输入字段中选择一个值,然后用相应的数据填充另一个字段
- 如何获取id并在ror中基于该id显示下一个字段
- 使用Join,要求两个字段中的一个字段为非空
- jQuery自定义验证只显示最后一个字段的错误
- 我如何使用jQuery来点击和选择并让它填充一个字段
- 如何让Typeahead.js使用对象的一个字段而不是全部字段自动完成或选择
- 在document-mongoDB中设置一个字段
- 如何计算mongodb中两个集合中一个字段的不同值的数量
- AngularJS:在控制器中过滤除一个字段外的所有字段
- 更新其中一个字段时刷新其他输入字段.使用Angularjs(附Plunker)