【问题标题】:passing db url as ajax parameter将 db url 作为 ajax 参数传递
【发布时间】:2012-01-27 09:36:20
【问题描述】:

我有一个用 python cherrypy 编写的控制器,它应该通过尝试建立连接来检查数据库 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:root@127.0.0.1:5432/tvb?user=postgres&password=postgres'

对于 sqlite 部分,如果我执行以下操作,我设法通过了它:

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

然后用python替换回来。但这对我来说似乎很老套,对于 postgress 部分,我想我将不得不更换更多。那么处理这个问题的正确方法是什么?

【问题讨论】:

  • encodeURIComponent() 不会做这项工作吗?

标签: javascript ajax cherrypy


【解决方案1】:

使用data 选项将其作为 POST 参数的一部分而不是作为 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 参数。

【讨论】:

  • 谢谢,正是我所缺少的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 2010-12-18
  • 2015-08-20
相关资源
最近更新 更多