2013-12-18 28 views
0

我在我的控制器代碼中有一個db插入語句。用戶插入文本後,單擊將其保存到數據庫中,但代碼的JavaScript部分返回錯誤。這隻發生在從另一臺計算機訪問頁面的情況下。如果我從服務器的本地主機運行它沒有錯誤返回web2py服務器返回錯誤,但查詢提交

任何想法?

謝謝

這裏是我的代碼

控制器在default.py

def add_item(): 

acedata = request.body.read() 
data = gluon.contrib.simplejson.loads(acedata) 
ace_script = str(data["podatki"]) 
PgSQL = db_conn() ## connect to db 
cur = PgSQL.cursor() 

sql = """ 
     INSERT INTO datoteke(
       file_name, file_text) 
     VALUES ('%s', '%s');""" % ('neki', ace_script) 

cur.execute(sql)   
PgSQL.commit() 
PgSQL.close() 
print "DONE!!!" 
return dict() 

和我的JavaScript部分

function okClicked() { 
    var scr_name = $('#txt_shranikot').val(), 
     dat = {'podatki' : saveContent(), 'name' : scr_name}, 
     data = JSON.stringify(dat), 
     savedScripts = {{=XML(skripte)}}; 
    console.log($.inArray(scr_name, savedScripts)); 
    if ($.inArray(scr_name, savedScripts) != -1) { 
     console.log("NE!!!!") 
     $(".modal-body").prepend('<div class="alert alert-danger">To ime skripte že obstaja</div>'); 

    } else { 
     //$("#saveNewScript").data-dismiss="modal" 
     $("#saveNewScript").attr('data-dismiss','modal'); 
     doPost("{{=URL('default', 'SaveNew')}}", data); 

    } 
}; 

function doPost(callback, data) { 
    $.post(callback, data, function(data){}) 
    .done(function() { alert("Done!"); }) 
    .fail(function() { alert("Failed!");}) 
} 
+0

在您的控制器中,爲什麼使用遊標和SQL語句? web2py中的DAL有很多不錯的功能... – espern

回答

0

你可能沒有一個方法add_item。 html視圖文件。在本地主機上,默認情況下,web2py將在特定視圖文件不存在的情況下使用generic.html(假設您使用腳手架應用程序開始,並在db.py中保留允許在本地主機上啓用通用視圖的行)。否則,你會得到一個錯誤。請注意,插入已提交,因爲add_item()函數返回後發生錯誤。

如果您不需要add_item操作來執行視圖並生成任何HTML,則不必返回字典,而只需返回一個字符串(例如「Success」)。