2012-12-15 31 views
1

我有这段代码,它允许我每隔几秒重新加载页面的内容。防止在搜索中刷新Ajax

function() 
{ 
$('#lista').show().load('listaupdate.php').fadeIn("slow");}, 3000); 

现在,问题是,我有一个搜索形式出现,但在搜索时,我应该如何防止刷新?

或者它可以刷新确定,但搜索完成后,并在结果给出后。 这是与分页相同的问题,如果我去第2页,然后它刷新,并带我到第1页。

我该如何解决这个问题? 感谢

搜索表单:

<form action="listasearch.php" method="post"> 
<select name="kategoria"> 
    <option value="dyqani_pergjegjes">Dyqani Përgjegjës</option>  
</select> 
<input type="text" name="search"> 
<input type="submit"> 
</form> 
+1

需要更多的代码来诊断。 – bobthyasian

+0

很好,listaupdate只是一个SQL查询,其中打印出一些数据! –

+0

你是什么意思:'如果我去第2页,那么它刷新并带我到第1页。你显示了一些信息,其中第1页和第2页是数据的不同部分? –

回答

0

我看到这个问题的方法有两种选择:

  1. 选项1:使listaupdate.php只返回数据,并AJAX调用而不是在完整的处理程序中加载和构建标记(想法是否重新加载整个页面,包括搜索表单 - 仅需要更新的数据)。请参阅http://api.jquery.com/jQuery.get/

  2. 选项2 - 在用户正在使用搜索字段时取消更新(坦率地说,不是更好的解决方案,但仍然)。这样做:

    var interval = setInterval(function(){ 
    $('#lista').show().load('listaupdate.php').fadeIn("slow");}, 3000); 
    

听一些与搜索相关的事件(自己制作的一个焦点是否适合deosn't的情况下):

$('input[name="search"]').on("focus", function(event){ 
    interval = clearInterval(interval); 
}); 

// restart it when search is done 
$("form").submit(function(event){ 
     interval = setInterval(function(){ 
     $('#lista').show().load('listaupdate.php').fadeIn("slow");}, 3000); 
    }); 
+0

感谢这看起来更好,我的意思是我可以更好地使用clearinterval,因为它解决了很多我的问题,请问一个问题 应该如何搜索表单看起来像?基于#searchField的 ? 对不起,我知道这是真正的初学者问题! –

+0

我不知道你的搜索是如何工作的,所以我假设你有一个字段(输入id = searchField作为例子)让用户输入内容?所以我用焦点作为搜索的开始,并且把焦点作为结束。如果不知道更多:) –

+0

请不要真的做得更好,只是给我一个如何搜索表单html样本,基于代码.. –