开发者

how should i delay the ajax request?

like this jquery code, how should i delay the ajax request? input is a text field...over my head ....thx for help...

var proname = "" ;
$("input[name='proname']").keyup(function(e){
    //how should i delay this function on here ?
    if (e.which == 13) return ;
    if ($(this).val() != proname)
    {
         proname = $(this).val() ;
    }
    else
    {
     return ;
    }
    $.ajax({
         type: "post",
         data: "proname="+proname+"&page=1",
         url: "/project/searchrate",
         success: f开发者_开发百科unction(view){
             alert(view) ;
         }
    }) ;
}) ;


You want to use setTimeout.

From your usage, it seems to be a good idea to have a timeout that is being cleared every time another keyup event occurs, to avoid a queue.

var requestDelay;
var proname;

$('input[name=proname]').keyup(function() {

   if(e.which == 13 || $(this).val() == proname)
      return;

   proname = $(this).val();

   // postpone the submit another 300 ms upon every new character
   window.clearTimeout(requestDelay);  

   requestDelay = window.setTimeout(function() {
      $.ajax(...);
   }, 300);


});


I see you are doing some kind of autosearch/autocomplete feature.

Have you considered just using the jQuery UI Autocomplete? http://jqueryui.com/demos/autocomplete/#remote-jsonp

As for the question itself you have already been answered.


Use setTimeout.

var proname = "" ;
$("input[name='proname']").keyup(function(e){
    if (e.which == 13) return;
    setTimeout(function() {
        if ($(this).val() != proname) {
            proname = $(this).val();
        } else {
            return;
        }
        $.ajax({
            type: "post",
            data: "proname="+proname+"&page=1",
            url: "/project/searchrate",
            success: function(view){
                alert(view) ;
            }
       });
    }, DELAY_IN_MSECS);
});


 $("input[name='proname']").keyup(function(e){
        //how should i delay this function on here ?
        if (e.which == 13) return ;
    setTimeout(function() {
        if ($(this).val() != proname)
        {
             proname = $(this).val() ;
        }
        else
        {
         return ;
        }
        $.ajax({
             type: "post",
             data: "proname="+proname+"&page=1",
             url: "/project/searchrate",
             success: function(view){
                 alert(view) ;
             }
        }) ;

        }, 1000);    
}) ;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜