2017-04-12 25 views
0

私がしようとしているのは、マテリアライズCSSを使ってオートコンプリート機能を備えた検索バーを作成することです。私はシンプルな配列を使って作業しています。作業コード:FlaskとMySQLを使ったCSSオートコンプリート

<input type="text" placeholder="search" id="autocomplete-input" class="autocomplete" > 

<script> 
$(document).ready(function() { 
$('input.autocomplete').autocomplete({ 
    data: { 
     "Dog": null, 
     "Bear": null, 
     "Bull": null, 
     "Cat": null 
    } 
}); 
}); 
</script> 

私がしたいのは、スクリプトで配列を使用してFlaskを使用してMySQLデータベースに戻るのではなく、私は運がないいくつかのフラスコのルートを試しています。

@app.route('/autocomplete', methods=['POST', 'GET']) 
def autocomplete(): 
if request.method == 'POST': 
    query = request.form['query'] 
    try: 

     with db.cursor() as cursor: 
      sql = "SELECT short_name, name FROM table WHERE name LIKE %s" 
      cursor.execute(sql('%' + query + '%')) 
      result = cursor.fetchall() 
    finally: 
     a = 2 
     return render_template("results.html", search_result=result) 
else: 

    return "ooops" 

これが可能であるかどうかわかっている人はいますか?

+0

期待される結果は、「ユーザーがフラスコバックエンドをポストコールして関連する結果を得るとき」です。 – Pradeepb

+0

@Pradeepbそれは正しいです。 [例](https://icefox0801.github.io/materialize-autocomplete/examples/)しかし、私はMySQLデータベースを照会したいだけです。 – Lost

+0

私は多くをチェックして、マテリアライズCSSがオートコンプリートのためのajaxコールをサポートしているかどうかを確認できませんでした。 jquery-UIオートコンプリートを使用することをお勧めします(私は1つのプロジェクトでそれを使用していますが、完璧に動作します) – Pradeepb

答えて

0

以下の例では、Jquery-UIを使用しています。あなたのHTMLファイルにthisを含めてください。

$(document).ready(function(){ 
     $('input.autocomplete').autocomplete({ 
      source: function (request, response) { 
       $.ajax('/autocomplete', { 
        'method': 'GET', 
        'data': request 
       }).done(function (data) { 
        response(data['items']); 
       }).fail(function() { 
        console.log('fail'); 
       }); 
      }, 
      minLength: 3, // minimum Length of characters 
     }); 
    }); 
+0

ありがとう、私はTypeErrorを取得しています:strでなければなりません。NoneType コードのフラスコ部分にあります。あなたはあなたのpython /フラスココードの例があれば? – Lost

+0

チェック[this](https://pastebin.com/Fw8ciGY8) – Pradeepb

+0

[mine](https://pastebin.com/1mWd8Luk)ここで私は "cursor.execute(sql、( '%' + search + '%')) TypeError:strでなければなりません.Type " – Lost

関連する問題