$.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);     } }); 

来自Wikipedia搜索API的主题标签符号和本地服务器之间的区别

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

编辑:通过本地主机,我的意思是我将端点更改为服务器,因此可以看到如果将带有井号的选项列表发送回去会发生什么。 它工作正常,我注意到服务器发送的主题标签与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),但是没有区别。

===============>>#1 票数:0 已采纳

问题在于Wikipedia文章标题不能包含#字符 显然,有些人很有创造力,而是使用全数字符号来规避此限制。

相应地, 普通搜索找到#的单个准确结果 ,但是您正在使用的Opensearch API似乎进行了一些unicode感知的模糊匹配,并返回以开头的页面。 <datalist>不会考虑这些。

  ask by jmoney translate from so

本文未有回复,本站智能推荐: