传递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中替换回来。但是,这对我来说似乎很难受,对于后门部分我想我必须更换一些。那么处理这个问题的正确方法是什么?
答
将其作为一个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
不会'encodeURIComponent()'做这项工作吗? – 2012-01-27 09:38:52