Select2带有AJAX项目结果未显示在HTML中

问题描述

我正在研究Flask应用,并在“产品”上实现了简单的搜索功能。 我把创建响应的JavaScript代码+ HTML代码+ Flask方法放在一起。

Select2组件可以正常工作,直到它必须显示来自后端的结果为止。 我在浏览器中看到响应有效载荷是来自后端的JSON,但是以某种方式Select 2没有显示这些结果。 我什至添加了一些JavaScript警报,并且在JSON警报中显示了JSON数据,但没有将其添加到Select2值中。

到目前为止,这里是我的代码: HTML + JavaScript(在Jinja-Flask模板内部):

<header><h2>Buscar Producto emulando youtube</h2></header>
<section class="create_item-form">
    <div class='container'>
    <h3>probando el select 2</h3>
        <form>
                <select id='selUser' style='width: 500px;'>
                     <option value='0'>Click para buscar producto </option>
                </select>
        </form>
        <script type=text/javascript>
            $(document).ready(function(){
                 $("#selUser").select2({
                      ajax: {
                       url: '/compras/new_name_search',type: 'POST',dataType: 'json',delay: 500,data: function (params) {
                        return {
                          searchTerm: params.term // search term
                        };
                       },processResults: function (response) {
                         return {
                            results: response
                         };
                       },cache: true
                      }
                     });
              });
        </script>
    </div>
</section>

然后,我的Flask代码

def new_name_search():
print("prod_name",request.form['searchTerm'])
#con el parametro que venga del front end,via post,hacemos el query
#modificar el metodo de query,para que sea algo mas de este estilo:
# $fetchData = MysqLi_query($con,"select * from users where name like '%".$search."%' limit 5");

#y devolver el resultado en un dict ?

try:
    test_prod = request.form['searchTerm']
    if test_prod.lower() == 'copisi':
        return jsonify(id=1,text='Aceite De Girasol Y Oliva copisi Scelto 900 Ml')
    else:
        return jsonify(id=0,text='otros prod')
except Exception as e:
     return str(e)

与HTML交互时,我可以输入Select2并进行搜索。后端从该选择中获取输入数据,它创建回JSON并将响应发送到浏览器。 在这种情况下,它只是一个简单的id=1,text='Aceite De Girasol Y Oliva copisi Scelto 900 Ml',仅用于调试目的,但是它将从数据库获取数据。

有什么线索吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)