使用web2py,jQuery和ajax,你如何发布到数据库?

时间:2013-10-23 08:07:14

标签: ajax database jquery web2py

使用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是否真的要去任何地方..

我是否遗漏了将此数据实际传递到数据库所需的任何步骤?或者这可能只是我的数据不是数据库的所有正确类型?

干杯球员

1 个答案:

答案 0 :(得分:1)

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

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

查看DAL章节,了解有关数据库建模的详细信息,有关创建与数据库表关联的表单的详细信息,请参阅SQLFORM部分,以及ajax和{{3}部分有关使用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将记录发布到数据库。