1

これをajax.jsファイルとして保存しました:

function sendAjax(type, str)
{
var xmlhttp;
if (str=="")
  {
  document.getElementById("txtResp").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtResp").innerHTML=xmlhttp.responseText;
    }
  }


switch(type)
{
case 'search':
    xmlhttp.open('GET','mysql_process_search.php?q='+str,true); 
  break;
case 'add':
    xmlhttp.open("GET","mysql_process_event.php?q="+str,true); 
  break;
}

xmlhttp.send();
}

基本的に、組み込みの setInterval() 関数を使用して、URL 変数に含まれるものを繰り返し使用しようとしています。

ある意味では、tfunction sendAjax(type,str) が呼び出された後、5 秒ごとにこれを実行する必要があります (書面によると):

case 'add':
    xmlhttp.open("GET","mysql_process_event.php?q="+str,true); 
  break;
}

xmlhttp.send();

インターバルで関数を書く場所を設定することができました:IE

setInterval( "sendAjax('message', '123')", 5000 );
sendAjax('message','123')

しかし、コード全体にこの関数が書かれている場所がいくつかありますが、キーアクションと if ステートメントに含まれている場合、これは一度しか実行されないため機能しません。

$('#searchbar').live('keyup',function() {
    eInput = $(this).val();
    if (eInput.length > 1) {
    setInterval( "sendAjax('message', '123')", 5000 );
    sendAjax('message','123')
}
});

// この関数は動作しません。

誰かが最後の関数を修正するのを手伝ってくれたり、Ajax.js ファイル自体に setInterval を含めたりするのを手伝ってくれたら、大歓迎です。

よろしく、テイラー

4

1 に答える 1

1

function sendAjax(type, str)jQueryを使用すると、はるかに簡単に書き直すことができます(それがあなたが使用しているように見えるためです:

function sendAjax(type, str, succ){  //where succ is the success callback

   if (str=="")
   {
        $("#txtResp").empty();
        return;
   }

   if(succ === undefined) {   succ = null;  }

   switch(type)
   {
   case 'search':
       $.ajax({type:"GET",
               url: "mysql_process_search.php",
               data: "q="+str,
               success: succ
       }); 
     break;
   case 'add':
       $.ajax({type:"GET",
               url: "mysql_process_event.php",
               data: "q="+str,
               success: succ
       }); 
     break;
   }

}

次に、次のようにします。

$('#searchbar').live('keyup',function() {
    eInput = $(this).val();
    if (eInput.length > 1) {
       sendAjax('message','123', function(responseText){
             $("#txtResp").html(responseText);
             setInterval( function(){
                     sendAjax('message', '123', function(responseText){
                            $("#txtResp").html(responseText);
                     })
              }, 5000 );
       })
    }
});
于 2011-05-11T17:30:03.510 に答える