2015-03-11 4 views
0

Например, если у меня есть этот код:Доступ к данным SQLite через Javascript?

<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? как еще я должен запускать функции javascript, которые зависят от данных sqlite? Любая помощь приветствуется. Благодаря!

ответ

1

Использование Ajax для отправки вызова другому route в ваше приложение, которое возвращает строку (plain или JSON, в зависимости от того, что более полезно). Затем вызов Ajax использует функцию success для синтаксического анализа этих данных и принятия соответствующих мер.

Таким образом, в дополнение к коду, который только вынесенным Настой:

{% 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) тем, что вы пытаетесь получить из формы.

+0

Как мне получить маршрут в моем приложении для хранения данных, которые я хочу? Например, в Flask, когда вы возвращаете (данные базы данных) 'в конце функции в' @app.route (/ test /) ', как я могу получить данные базы данных, которые будут возвращены? Данные будут получены из файла python, который запрашивает базу данных, поэтому как мне это вернуть? –

+1

Я добавил немного больше ответа. Помогает ли это @James? – Celeo

+1

Да, именно это я и спрашивал. Я рассмотрю все это, спасибо вам большое! –

0

Короткий ответ - да, но в ограниченных браузерах, см. Ссылку для получения более подробной информации. http://html5doctor.com/introducing-web-sql-databases/

Длинный ответ может быть умным, чтобы использовать бэкенд для доступа к ним (возможно, через API?) Вот один из таких примеров для колба (хотя я не уверен, что вы используете https://flask-restless.readthedocs.org/en/latest/)

+0

Возможно, вы также захотите рассмотреть следующую библиотеку: https://github.com/kripken/sql.js – John

+0

Я использую Flask. Хотя я буду смотреть на эти ссылки, это правильный способ сделать это? Каков наилучший/правильный способ сделать это? Неужели люди все это делают? (сравнение пользовательского ввода через форму, данные в их базе данных) –

Смежные вопросы