2016-11-07 46 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

相關問題