使用Ajax发出POST请求
Making POST request using Ajax
我想发送电子邮件到我的flask服务器使用Ajax,但它不工作。下面是我的代码。
脚本:
<script type="text/javascript">
$(document).ready(function(){
var email = "";
$("#letter").on("click",function(){
email = $("letterEmail").val();
$.ajax({
type: 'POST',
url: '/letters',
data: JSON.stringify({Email: email}),
contentType: 'application/json;charset=UTF-8'
});
$("#lettersForm").html("Sent");
console.log(email.toString());
});
});
</script>
Python视图处理:
@app.route("/letters", methods = ['POST'])
def letters():
email = request.json['Email']
send_email("myemail@example.com","Email",str(email))
return True
这是表单
<form id = "lettersForm">
<div class="row uniform 50%">
<div class="8u 12u(mobilep)">
<input type="email" name="email" id="letterEmail" placeholder="Email Address" />
</div>
<div class="4u 12u(mobilep)">
<input id = "letter" type="submit" value="Sign Up" class="fit" />
</div>
</div>
</form>
问题是数据没有从客户端发送。
所以我在服务器端也得到一个KeyError
。
请帮。
KeyError
是由于Flask没有找到密钥。注意,如果stringify发现一个空的email变量,它将不会自动在邮件中包含该键。
同时,不要直接使用request.json
,而要使用request.get_json()
。
客户端问题在这一行:
email = $("letterEmail").val();
它将尝试获取页面中任何具有tagName letterEmail
的元素,我认为你没有。
可能,你在这里要做的是通过它的ID获取元素:
email = $("#letterEmail").val();
相关文章:
- 当我在form_for中的text_field_tag中点击Enter时,如何禁止发出POST请求
- 为什么 AJAX POST 请求不起作用
- Ajax POST请求没有'我不了解PHP
- 防止双击执行两次jQuery post请求
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 如何使用Javascript获取POST请求填充的元素的值
- NodeJS中POST请求的请求体为null
- 在Fiddler JavaScript中识别POST请求
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- 使用application/x-www-form-urlencoded使用node.js在post请求中发送数组
- 打开一个选项卡,并在firefox网络扩展中向其发出POST请求
- 通过AJAX向同一页面发送POST请求,并使用$_POST获取值
- Ajax Post请求不起作用
- 如何在cloud9中向server.js发送post请求
- mootools表单json post请求
- 可以'无法在CasperJS中复制POST请求
- node.js请求POST数组“;第一个参数必须是字符串或缓冲区;
- PythonBottle:访问请求POST数据中的数组变量
- NodeJS请求POST图标
- Yii框架2.0 AJAX请求POST方法