通过Javascript访问SQLite数据?

时间:2015-03-11 02:03:55

标签: javascript sqlite flask flask-sqlalchemy

例如,如果我有这段代码:

<form action="{{ url_for('user.new_domain') }}" class="form" role="form" method="post" action="" autocomplete="off">
    {{ form.csrf_token }}
    <p>{{ form.name(placeholder="name", onkeyup="timing()") }}
      <span class="error">
      {% if form.name.errors %}
        {% for error in form.name.errors %}
          {{ error }}
        {% endfor %}
      {% endif %}
    </span>
    </p>
</form>

timing()是javascript文件中的一个函数,我在代码中的<script>标记内。我希望timing()能够访问我的sqlite数据库信息,并检查用户输入表单的内容是否存在于我的数据库中。这甚至是正确的方法吗?通过javascript?我怎么能运行依赖于sqlite数据的javascript函数?任何帮助表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

使用Ajax向您应用中的另一个route发送一个调用,该调用返回一个字符串(普通或JSON,哪个更有用)。然后,Ajax调用使用它的success函数来解析该数据并根据需要对其进行操作。

所以,除了你的代码只由Flask呈现:

{% if form.name.errors %}
    {% for error in form.name.errors %}
        {{ error }}
    {% endfor %}
{% endif %}

你需要通过JavaScript行事:

<script>
    function timing() {
        $.ajax({
            method: "POST",
            url: "some url",
            data: {
                key: "value"
            },
            success: function(data) {
                // do something
            }
        });
    }
</script>

并且你的应用程序中的代码会是这样的(基于你的结果来自另一个实际进行查询的Python文件的事实):

from that_other_file import the_querying_function

@app.route('/some_url', methods=['POST'])
def some_url():
    return the_querying_function(request.POST['key'])

这使用HttpResponse.POST。将key(在JS和Python中)替换为您要从表单中获取的任何内容。

答案 1 :(得分:0)

简短回答是肯定的,但在有限的浏览器上,请参阅链接了解详情。 http://html5doctor.com/introducing-web-sql-databases/

很长的回答是,使用你的后端来访问它们可能是明智的(可能通过API?)以下是Flask的一个例子(虽然我不确定你使用的是什么https://flask-restless.readthedocs.org/en/latest/