使用 Wikipedia 的 opensearch api 时,主题标签符号不会填充数据列表。为什么?
When using Wikipedia's opensearch api, the hashtag symbol will not populate the datalist. Why?
$.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);
}
});
Difference between hashtag symbol from wikipedia search api and local server
换句话说,数据列表通常可以很好地填充其他字符,包括@或$,但是当使用#时,即使在检查元素时数据列表填充了正确的项目,它也不会下拉并显示建议。
编辑:我所说的本地主机是指我将端点更改为我的服务器,这样我就可以看到如果我发回带有标签的选项列表会发生什么。它运行良好,我注意到我的服务器发送的主题标签与 wiki 的开放搜索之间的字体不同。
编辑:搜索变量来自这样的输入框-
<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),但没有任何区别。
问题是Wikipedia article titles cannot contain a #
character. Apparently some people got creative and instead used the FULLWIDTH NUMBER SIGN #
反而绕过了这个限制
相应地,您正在使用的 normal search would find only a single accurate result for #
, but the Opensearch API 似乎进行了一些 unicode 感知模糊匹配和 returns 以 #
开头的页面。然而 <datalist>
不会考虑这些。
$.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);
}
});
Difference between hashtag symbol from wikipedia search api and local server
换句话说,数据列表通常可以很好地填充其他字符,包括@或$,但是当使用#时,即使在检查元素时数据列表填充了正确的项目,它也不会下拉并显示建议。
编辑:我所说的本地主机是指我将端点更改为我的服务器,这样我就可以看到如果我发回带有标签的选项列表会发生什么。它运行良好,我注意到我的服务器发送的主题标签与 wiki 的开放搜索之间的字体不同。
编辑:搜索变量来自这样的输入框-
<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),但没有任何区别。
问题是Wikipedia article titles cannot contain a #
character. Apparently some people got creative and instead used the FULLWIDTH NUMBER SIGN #
反而绕过了这个限制
相应地,您正在使用的 normal search would find only a single accurate result for #
, but the Opensearch API 似乎进行了一些 unicode 感知模糊匹配和 returns 以 #
开头的页面。然而 <datalist>
不会考虑这些。