【问题标题】:Using web2py, jQuery and ajax, how do you post to a database?使用 web2py、jQuery 和 ajax,如何发布到数据库?
【发布时间】:2013-10-23 08:07:13
【问题描述】:

使用 web2py 我正在尝试使用 ajax 将数据放入数据库中的表中,但我需要一些帮助。

这是我正在使用的函数(它目前在数据部分中有虚拟数据,而不是从表单传递数据):

function submitData(){
    $.ajax({
        type: "POST",
        url: "requests",
        data: {
                    id: 1, 
                    user_id:111, 
                    bottle_image:'',
                    bottle_name:'JJjman',
                    bottle_description:'Lol',
                    request_creationDate:'2000-01-01',
                    request_expiryDate:'2003-08-08', 
                    request_fulfilled:false
            },
        success: function(){
            alert('Posted data');
        }
    });
}

我有一个 html 按钮,此功能附加到它的“onclick”,但目前它所做的只是重新加载页面而不将任何数据传递到数据库。成功提醒也会出现。

Firebug 说 POST 确实包含所有这些数据,但我不确定 POST 是否真的要去任何地方..

我是否遗漏了将这些数据实际传递到数据库所需的任何步骤?或者这只是因为我的数据类型不适合数据库?

大家好

【问题讨论】:

    标签: ajax database jquery web2py


    【解决方案1】:

    除非您在服务器上有处理数据并将其插入数据库的代码,否则仅从浏览器发送帖子不会在服务器上执行任何操作。

    我强烈建议您阅读book 的相关部分以了解如何执行此操作。 Overview 章节提供了一个介绍性教程,包括构建一个 image blog,其中涉及对数据库表进行建模和创建将记录发布到该表的表单。

    查看DAL 章节了解有关对数据库进行建模的详细信息,查看SQLFORM 部分了解有关创建与数据库表关联的表单的详细信息,查看ajaxcomponents 部分了解有关使用Ajax 发布的详细信息表格。

    做你想做的最简单的方法是这样的:

    在 /models/db.py 中:

    db = DAL('sqlite://storage.sqlite')
    
    db.define_table('bottle',
        Field('user_id')
        Field('bottle_image'),
        Field('bottle_name'),
        Field('bottle_description', 'text'),
        Field('request_creationDate', 'date'),
        Field('request_expiryDate', 'date'),
        Field('request_fulfilled', 'boolean'),
        format='%(bottle_name)s')
    

    在/controllers/default.py:

    def index():
        return dict()
    
    def add_bottle():
        return dict(form=SQLFORM(db.bottle).process())
    

    在 /views/default/add_bottle.load 中:

    {{=form}}
    

    在/views/default/index.html:

    {{extend 'layout.html'}}
    
    {{=LOAD('default', 'add_bottle.load', ajax=True)}}
    

    然后转到/yourapp/default/index,你会看到一个表单,它会通过Ajax将记录发布到数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 2012-10-19
      相关资源
      最近更新 更多