2016-11-07 63 views
0

我想指出的第一件事是我就像一个紧张的程序员或紧张的学习者。我觉得我想快速学习东西,所以我开始很快检查网站和书籍,如果我觉得我正在阅读的内容不能满足我的需求,那么我就关闭它并开始做其他事情。我只是想知道这种行为是否听起来很熟悉。通过在web2py中使用JavaScript将数据存储在数据库中

我有以下问题。我刚开始学习如何在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

首先阅读文档的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工具或任何其他使Ajax调用的Javascript方法。

+0

这让我觉得网站将不得不刷新以存储新的价值。我试图在数据库中添加的值是一个列表元素,所以我不希望整个网站重新加载。 – TheMathNoob

+0

不,这就是使用Ajax的要点 - 您可以将数据从浏览器发送到服务器而无需刷新页面。 Ajax调用可以将一些数据返回给浏览器,然后您可以使用它更新页面(但不会重新加载页面)。您可能需要花一些时间学习Ajax并使用Javascript更新浏览器中的显示。 – Anthony

相关问题