【问题标题】:Ajax - How to add option into datalist using Ajax/jqueryAjax - 如何使用 Ajax/jquery 将选项添加到数据列表中
【发布时间】:2021-05-06 11:38:43
【问题描述】:

我正在使用Flask, MySQL, and ajax 创建一个搜索框。 我在控制台中获得了 JSON 格式的搜索结果,但我想将其附加到我的 HTML 中 datalist 的选项值上。

这是 HTML -

<form class="cours-search">
                            <div class="input-group">
                                <input type="text" class="form-control" id="searchbox" autocomplete="off" placeholder="Search Address, Owner Name   " name="city" list="results">
                                <datalist id="results">
                                <option value="Boston">
                                </datalist>
                                <div class="input-group-append">
                                    <button class="btn" type="submit">Search</button> 
                                </div>
                            </div>
                        </form>

这是我的 ajax 代码 -

<script>
    $(document).ready(function(){
        $("#searchbox").on("input", function(e){
            searchtext = $("#searchbox").val();
            
            $.ajax({
                method:"post",
                url:"/searchengine",
                // data:{backendname:valueName}
                data:{text:searchtext},
                success:function(res){
                    console.log(res);
                    //What Should I Do I Don't Know
                }
            })
        });
    })
</script>

这是控制台中的结果数据(JSON 格式)-

0: {address: "Delhi NCR"}
1: {address: "Dhar"}
length: 2
__proto__: Array(0)

我想在我的 HTML 中的 datalist &lt;option&gt; 中添加地址值。 非常感谢您。

【问题讨论】:

    标签: javascript html jquery json ajax


    【解决方案1】:

    要执行您需要的操作,您可以遍历 AJAX 请求的响应并创建新的 option 元素,其中包含 address 属性中的文本。试试这个:

    // inside your AJAX callback:
    
    let res = [{ address: "Delhi NCR" }, { address: "Dhar" }];
    let options = res.map(o => `<option value="${o.address}">`);
    $('#results').append(options);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <form class="cours-search">
      <div class="input-group">
        <input type="text" class="form-control" id="searchbox" autocomplete="off" placeholder="Search Address, Owner Name   " name="city" list="results">
        <datalist id="results">
          <option value="Boston">
        </datalist>
        <div class="input-group-append">
          <button class="btn" type="submit">Search</button>
        </div>
      </div>
    </form>

    【讨论】:

    • 您的方法有效,但它给出了重复的响应选项,您能告诉我如何解决吗?
    • 当然,您可以使用它来按属性值对对象列表进行重复数据删除:stackoverflow.com/q/2218999/519413 - 更好的是,修复从服务器返回的响应 /searchengine 以删除那里的重复项
    • 您能否根据我的代码编写它因为我是初学者我不明白您引用的答案。请@RoryMcCrossan
    • 如果您遇到重复数据删除问题,我建议您提出一个新问题,因为它不是上述原始问题的一部分。请记住在编写新问题时包含您的尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2018-08-06
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多