Javascript getJSON不以用户类型发送新请求
给定以下JavaScript,当用户更改搜索词时,我在发送新请求时遇到问题。输入超过3个字符后,才应开始搜索/显示结果。它目前只在超过3个字符的初始项后进行一次搜索,但在此之后不会发送另一个请求 jQueryJavascript getJSON不以用户类型发送新请求,javascript,jquery,getjson,Javascript,Jquery,Getjson,给定以下JavaScript,当用户更改搜索词时,我在发送新请求时遇到问题。输入超过3个字符后,才应开始搜索/显示结果。它目前只在超过3个字符的初始项后进行一次搜索,但在此之后不会发送另一个请求 jQuery $("#results-container").hide(); $("#global-search").keyup(function(e) { var q = $("#global-search").val(); if (e.which == 13) { window.l
$("#results-container").hide();
$("#global-search").keyup(function(e) {
var q = $("#global-search").val();
if (e.which == 13) {
window.location.replace("/search?q=" + q);
}
//Only begin search with at least 3 characters.
if (q.length > 3) {
$("#results-container").show();
ajax_search();
}
//Send search query
function ajax_search() {
$.getJSON("//search.url-to-rest-api.com?q=" + q, {},
//Get results and make 'em look good
function(data) {
console.log(data);
// $(".results").append("Results for <b> " + q + "</b>");
$.each(data.data, function(i, data) {
if (data.type === "Practice Area") {
$(".practice-area-results").append("<li class='result-item'><a href=\"" + data.permalink + "\">" + data.title + "</a></li>");
if ($(".practice-area-results").val() == '') {
$(".practice-area-results-header, .practice-area-results").empty();
}
}
});
});
}
});
$(“#结果容器”).hide();
$(“#全局搜索”).keyup(函数(e){
var q=$(“#全局搜索”).val();
如果(e.which==13){
window.location.replace(“/search?q=“+q”);
}
//仅以至少3个字符开始搜索。
如果(q.长度>3){
$(“#结果容器”).show();
ajax_search();
}
//发送搜索查询
函数ajax_search(){
$.getJSON(“//search.url到restapi.com?q=“+q,{},
//得到结果,让他们看起来很好
功能(数据){
控制台日志(数据);
//$(“.results”).append(“用于“+q+”的结果”);
$.each(data.data,function(i,data){
如果(data.type==“练习区”){
$(“.practice area results”)。追加(“”;
如果($(“.practice area results”).val()=''){
$(“.practice area results header,.practice area results”).empty();
}
}
});
});
}
});
HTML
<div class="row desktop-search">
<div class="row">
<div class="col-lg-12">
<input type="text" class="form-control" id="global-search" style="width:100%; position: fixed;" placeholder="Search...">
</div>
<div id="results-container">
<div class="search-results">
<p class="practice-area-results-header">Practice Area</p>
<div class="practice-area-results"></div>
</div>
</div>
</div>
</div>
实践区域
在中似乎工作正常。检查浏览器控制台。问题是搜索结果没有反映新的搜索查询。它只显示第一个查询的结果。如何每次根据新查询呈现新结果?如果只显示第一次查询的结果,则每次搜索时都会传递相同的q
。请检查XHR选项卡,查看控制台中的每个输入都发送了什么响应。如果q
每次都不一样,那么问题可能是//search.url到restapi.com
向不同的查询发送相同的响应。检查这些问题。