传递db url作为ajax参数

传递db url作为ajax参数

问题描述:

我有一个用python cherrypy编写的控制器,它应该通过注意建立连接来检查数据库url是否有效。然而,我将问题传递给该方法时遇到了问题。我的Ajax调用:传递db url作为ajax参数

$.ajax({ async : false, 
     type: 'POST', 
     url: "/settings/check_db_url/"+db_url , 
     success: function(r) { alert(r) }, 
     error: function(r) { alert('failure') } 
    }); 

现在的问题,我需要测试的网址是形式:

'sqlite':'sqlite:///Users/Home/tvb-database.db' or 
'postgresql+psycopg2://postgres:[email protected]:5432/tvb?user=postgres&password=postgres' 

因为我设法通过它,如果我这样做sqlite的一部分:

db_url = db_url.split('/').join('__') 
db_url = db_url.split(':').join('x_xxx_x') 

然后在Python中替换回来。但是,这对我来说似乎很难受,对于后门部分我想我必须更换一些。那么处理这个问题的正确方法是什么?

+1

不会'encodeURIComponent()'做这项工作吗? – 2012-01-27 09:38:52

将其作为一个POST参数的一部分,而不是使用data选项的URL的一部分:

$.ajax({ 
    async : false, 
    type: 'POST', 
    url: '/settings/check_db_url', 
    data: { db_url: db_url }, 
    success: function(r) { alert(r) }, 
    error: function(r) { alert('failure') } 
}); 

而在你的服务器读取db_url POST参数。

+0

好点,没有意识到它是一个POST ;-) – 2012-01-27 09:39:34

+0

谢谢,正是我想念的。 – Bogdan 2012-01-27 09:50:23