【问题标题】:Bottle server POST options from listbox to SQL database从列表框到 SQL 数据库的 Bottle 服务器 POST 选项
【发布时间】:2019-02-14 04:29:53
【问题描述】:

我目前有一个按钮,当点击它时,它会创建两个变量。这些保存从列表框中选择的选项。然后我试图通过瓶子脚本将这些发布到我的数据库中,但是它不起作用。有人可以向我解释为什么吗?

按钮的 HTML/JQuery 代码如下:

$("#btnStartEvent").bind("click", function () {
        var selectedStudents = $('#lstBox2 option:selected');
        var selectedEvent = $('#event_options option:selected');


        alert(selectedEvent); 
        $.post( "/send_data", { eventIDPost: selectedEvent},function(data ) { 
        alert( data ); 


});

我处理这个 POST 的瓶子代码是:

@post('/send_data')
def send_data():
    postdata = request.body.read() 
    events_id = request.forms.get("eventIDPost") 
    sql = "INSERT INTO tblResults VALUES('{}')".format(events_id)
    run_sql(sql)

【问题讨论】:

    标签: python sql post bottle


    【解决方案1】:

    我不确定瓶子@post是否坏了,但参考

    http://bottlepy.org/docs/dev/api.html#bottle.Bottle.route

    并将 api 方法更新为以下内容:

    @app.route('/send_data', method=['POST'])
    def send_data():
    

    开始监听 API 调用。否则是 405 错误

    另请参考https://api.jquery.com/jquery.post/

    $.post("/send_data", { "eventIDPost": 1 })
       .done( function (data) {console.log(data)});
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我可以向您保证,@post 没有损坏。我每天都用它。

      from bottle import post, request
      
      def merge_dicts(*args):
          result = {}
          for dictionary in args:
              result.update(dictionary)
          return result
      
      @post('/send_data')
      def send_data():
          return merge_dicts(dict(request.forms), dict(request.query.decode()))
      

      【讨论】:

        猜你喜欢
        • 2015-02-05
        • 2011-06-29
        • 2016-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多