0

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

我是否错过了将这些数据实际传递到数据库所需的任何步骤?或者这只是因为我的数据不是数据库的正确类型?

干杯伙计们

4

1 回答 1

2

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

我强烈建议您通读本书的相关部分以了解如何做到这一点。概述一章提供了一个介绍性教程,包括构建一个图像博客,该博客涉及对数据库表进行建模和创建将记录发布到该表的表单。

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

于 2013-10-23T13:02:44.840 回答