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

storing elements in a database by using JavaScript in web2py

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

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

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 存储在数据库中。你能指出我需要学习哪些主题才能完成这样的任务吗?

首先阅读 jQuery and Ajax chapter of the documentation. In particular, check out the ajax function

如果task元素是具有"name"属性的表单元素,可以调用ajax函数如下(假设表单元素的名称为"task"):

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 来电。