1
$.ajax({
    url: "https://en.wikipedia.org/w/api.php",
    dataType: "jsonp",
    data: {
        'action': "opensearch",
        'format': "json",
        'search': search
    },
    success: function (data) {
        var suggestions = '';
        data[1].forEach(d => {
            suggestions += `<option value="${d}">`;
        });
        console.log(data);
        $('#searchList').html(suggestions);
        console.log(suggestions);
    }
});

来自维基百科搜索 api 和本地服务器的标签符号之间的区别

换句话说,datalist 可以正常填充其他字符,包括 @ 或 $,但是当使用 # 时,即使在检查元素时 datalist 填充了正确的项目,它也不会下拉并显示建议。

编辑:通过 localhost 我的意思是我将端点更改为我的服务器,这样我就可以看到如果我发回带有标签的选项列表会发生什么。它工作得很好,我注意到我的服务器发送的主题标签与 wiki 的 opensearch 之间的字体不同。

编辑:搜索变量来自这样的输入框-

<form class="pSearch form-inline" method="post" action="">
              <input class="pSearch" type="text" id="searchTerm" name="searchTerms" placeholder="Search" aria-label="Search" 
             list="searchList" autocomplete="off" spellcheck="true">
      <datalist id="searchList"></datalist>

我用 keyup 功能收听输入-

$('#searchTerm').keyup(function (e) {

    var search = $(this).val();

然后我将变量搜索发送到 opensearch api-

    $.ajax({...})
}

硬编码主题标签而不是使用变量可以正常工作 - “#”。我尝试了 JSON.stringify(search),但没有任何区别。

4

1 回答 1

1
于 2019-12-01T03:30:39.840 回答