使用web2py中的JavaScript将元素存储在数据库中

时间:2016-11-07 02:43:20

标签: javascript python sqlite web2py web2py-modules

我想指出的第一件事是,我就像一个紧张的程序员或紧张的学习者。我觉得我想快速学习东西,所以我开始非常快速地检查网站和书籍。如果我觉得我正在阅读的东西不满足我的需要那么我就关闭它并开始做其他事情。我只是想知道你是否觉得这种行为听起来很熟悉。

我有以下问题。我刚刚开始学习如何在web2py中编程,我需要将javascript输入存储在sqlite数据库中,所以例如我有下表:

db = DAL ('sqlite://storage.sqlite')
db.define_table('company', Field('name', notnull = True, unique = True), format = '%(name)s')
db.define_table(
   'contact',
   Field('name', notnull = True),
   format = '%(name)s'
)

and I have the following script code

li.innerHTML = document.getElementById('task').value;

所以我需要将document.getElementById存储在数据库中。你能否指出我需要研究的主题才能完成这项任务?

1 个答案:

答案 0 :(得分:1)

首先阅读文档的jQuery and Ajax章节。特别是,请查看ajax function

如果task元素是带有"名称"的表单元素。属性,您可以按如下方式调用ajax函数(假设表单元素的名称为"任务"):

ajax("{{=URL('default', 'insert_task')}}", ['task']);

如果task元素不是表单元素,您可以通过查询字符串将其传递给web2py:

ajax("{{=URL('default', 'insert_task')}}" + '?task=' + encodeURIComponent(li.innerHTML));

然后在web2py控制器中,insert_task操作将处理插入:

def insert_task():
    db.mytable.insert(task=request.vars.task)
    return 'Success'

注意,ajax函数接受第三个参数,它可以是(a)应该插入返回值的HTML元素的id,(b)一个Javascript函数,返回的值将被传递,或者(c)字符串":eval",这将导致返回的值被解释为Javascript并进行评估。如果要在页面上显示某些消息或在插入完成后对显示进行一些更改,则可以使用此参数。

最后,如果ajax函数不能满足您的需求,您可以始终使用jQuery's Ajax工具或任何其他Javascript方法来进行Ajax调用。