Python request.args.get对于ajax请求不返回任何值
我试图在html5中实现就地编辑。试图实现这一点 但在flask中,ajax和jquery取而代之。 当我向flask应用程序发送ajax请求时,它似乎无法访问我传递给“dd”标记的数据。这是我的路线功能Python request.args.get对于ajax请求不返回任何值,python,ajax,flask,Python,Ajax,Flask,我试图在html5中实现就地编辑。试图实现这一点 但在flask中,ajax和jquery取而代之。 当我向flask应用程序发送ajax请求时,它似乎无法访问我传递给“dd”标记的数据。这是我的路线功能 @app.route('/updateNode', methods=['POST']) def updateNode(): fieldToEdit = request.args.get('fieldToEdit', None) value = request.args.get('valu
@app.route('/updateNode', methods=['POST'])
def updateNode():
fieldToEdit = request.args.get('fieldToEdit', None)
value = request.args.get('value', None)
app.logger.debug(value)
app.logger.debug(fieldToEdit)
if value == None:
return jsonify(success=0)
else:
return jsonify(success=1)
当我使用app.logger.debug(值)进行检查时总是看不到
视图中的调试:无
视图中的调试:无
我的Ajax代码是这样的
<script>
$(document).ready(function(){
$("dd[contenteditable=true]").blur(function()
{
var field_user = $(this).attr("id") ;
var value = $(this).html() ;
console.log(field_user);
console.log(value);
$.ajax({
type: "POST",
url: "/updateNode",
data: {
'fieldToEdit' : field_user,
'value': value
},
dataType: "text",
success: function(rsp){
console.log("Ajax call was successful" + rsp);
},
error: function(e) {
console.log('request failed ' + e);
}
});
});
});
</script>
$(文档).ready(函数(){
$(“dd[contentediate=true]”)。模糊(函数()
{
var字段_user=$(this.attr(“id”);
var value=$(this.html();
console.log(字段\用户);
console.log(值);
$.ajax({
类型:“POST”,
url:“/updateNode”,
数据:{
“fieldToEdit”:字段\用户,
“值”:值
},
数据类型:“文本”,
成功:功能(rsp){
log(“Ajax调用成功”+rsp);
},
错误:函数(e){
console.log('请求失败'+e);
}
});
});
});
在调用ajax之前,我可以在开发人员工具控制台中看到正确的值
我的Html代码
<li>
<dl>
<dt>Age</dt>
<dd id="editAge"contenteditable="true">40</dd>
</dl>
</li>
年龄
40
runnable中的示例代码
.html()应该只返回值,因此我无法理解为什么request.args.get无法从数据中提供的键值对中检索值。出于这些目的,我不确定您是否要发送值的实际html,因为它将具有html标记 文件 html(): 在HTML文档中,.HTML()可用于获取任何 元素。如果选择器表达式匹配多个元素, 只有第一个匹配项才会返回其HTML内容。考虑 此代码: 为了检索以下内容,它将 必须是文档中带有class=“demo container”的第一个: 代码
$(“div.demo-container”).text()将产生以下结果:
示范箱清单项目1清单项目2
我可以用这个代码来解决它
<script type=text/javascript>
$(function() {
$('dd[contenteditable=true]').bind('blur', function() {
$.getJSON('/updateNode', {
a: $(this).attr("id"),
b: $(this).text()
}, function(data) {
console.log("Ajax call was successful" + data);
});
return false;
});
});
</script>
$(函数(){
$('dd[contentediate=true]')。绑定('blur',函数(){
$.getJSON(“/updateNode”{
a:$(this.attr(“id”),
b:$(this.text()
},函数(数据){
log(“Ajax调用成功”+数据);
});
返回false;
});
});
但是,我不知道为什么它不能与$.ajax方法一起工作console.log(value)
print它没有什么区别。在烧瓶路由功能中,它仍然是“无”。log(value)从40即40打印正确的值。我认为这与html标记有关,所以我尝试了这个-,但后来我得到了这个错误-TypeError:不能隐式地将'NoneType'对象转换为str.try.innerHTML?(不是函数)jquery中没有.innerHTML。根据doc link-html():.html()函数使用浏览器的innerHTML属性
<div class="demo-container">
<div class="demo-box">Demonstration Box</div>
</div>
<div class="demo-box">Demonstration Box</div>
<div class="demo-container">
<div class="demo-box">Demonstration Box</div>
<ul>
<li>list item 1</li>
<li>list <strong>item</strong> 2</li>
</ul>
</div>
<script type=text/javascript>
$(function() {
$('dd[contenteditable=true]').bind('blur', function() {
$.getJSON('/updateNode', {
a: $(this).attr("id"),
b: $(this).text()
}, function(data) {
console.log("Ajax call was successful" + data);
});
return false;
});
});
</script>