通过在web2py中使用JavaScript将数据存储在数据库中
问题描述:
我想指出的第一件事是我就像一个紧张的程序员或紧张的学习者。我觉得我想快速学习东西,所以我开始很快检查网站和书籍,如果我觉得我正在阅读的内容不能满足我的需求,那么我就关闭它并开始做其他事情。我只是想知道这种行为是否听起来很熟悉。通过在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在数据库。你能指出我为了完成这项任务需要研究的主题吗?
答
首先阅读文档的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方法。
这让我觉得网站将不得不刷新以存储新的价值。我试图在数据库中添加的值是一个列表元素,所以我不希望整个网站重新加载。 – TheMathNoob
不,这就是使用Ajax的要点 - 您可以将数据从浏览器发送到服务器而无需刷新页面。 Ajax调用可以将一些数据返回给浏览器,然后您可以使用它更新页面(但不会重新加载页面)。您可能需要花一些时间学习Ajax并使用Javascript更新浏览器中的显示。 – Anthony