Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python request.args.get对于ajax请求不返回任何值_Python_Ajax_Flask - Fatal编程技术网

Python request.args.get对于ajax请求不返回任何值

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

我试图在html5中实现就地编辑。试图实现这一点

但在flask中,ajax和jquery取而代之。 当我向flask应用程序发送ajax请求时,它似乎无法访问我传递给“dd”标记的数据。这是我的路线功能

@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>