我有一个显示在特定页面上的结果列表,这些结果使用简单的 AJAX 请求定期更新。输入表单允许我过滤这些结果,但是由于数据每隔几秒钟更新一次,输入表单在刷新所有数据时无法正常工作。当表单输入字段中有值时,AJAX 是否有任何方法不更新?
下面是 HTML 代码:
<div id="my-query-results" class="visible">
<div>
<form class="searchboxInput" action="#">
<input id="kwd-my-query-results" type="text" value="">
</form>
</div>
<div id="my_recent_queries">
<span class="loading_placeholder">Loading ...</span><br />
<img src="../img/ajax-loader.gif" />
</div>
</div> <!-- my query results -->
下面是我使用的 AJAX 请求:
if( $("#kwd-my-query-results").val() != "") {
function updateMyQueries() {
$.ajax({
url: "/myrecentqueries",
cache: false,
success: function(html){
$("#my_recent_queries").html(html);
}
});
setTimeout("updateMyQueries()", 600000);
}
updateMyQueries();
} else {
function updateMyQueries() {
$.ajax({
url: "/myrecentqueries",
cache: false,
success: function(html){
$("#my_recent_queries").html(html);
}
});
setTimeout("updateMyQueries()", 4000);
}
updateMyQueries();
}
上面的 if else 语句似乎不起作用。一旦输入框中出现值,它将评估 else 语句。我想我也尝试过 length(),但这似乎也不起作用。还有其他方法可以解决这个问题吗?
更新
鉴于以下建议,我尝试了以下方法,并且在某种程度上有效。它最初加载结果,允许我在不重新加载数据的情况下搜索它们,但是即使输入字段中没有文本,它也不会定期重新加载结果......
$(function(){
setTimeout(updateMyQueries(), 4000);
});
function updateMyQueries(){
if ($("#kwd-my-query-results").val() == "") {
// do ajax call
$.ajax({
url: "/myrecentqueries",
cache: false,
success: function(html){
$("#my_recent_queries").html(html);
}
});
}
}