我在我的網站上有一個ajax搜索功能,效果很棒!但是,我發現它可能會導致未使用的httpResquests由於快速打字機。所以我想添加一個計時器來減慢搜索速度。用setTimeout減慢AJAX功能
想到的第一件事是setTimeout,但它不起作用。它似乎工作(暫停搜索)第一次,但顯示結果後,它只是有點回到正常顯示結果第二我的關鍵了。所以,當我發現它不是因爲什麼原因,我轉向了stackoverflow,發現this和this,但他們基本上做了我所做的。
我在想這可能與AJAX的異步方式有關,也許這個方法在時間實際上到來之前在setTimeout中調用,但是這樣做沒什麼意義。因此,要完全誠實,我不知道發生了什麼,任何洞察力將不勝感激。哦,我用我自己的API我肯定只是看着方法名稱,你會知道他們做了什麼。
function validateNetworkInput()
{
var query, timer = null;
query = getValue("searchNetworkInput");
if(query.length > 0)
{
clearTimeout(timer);
show("searchNetworkWrapper");
timer = setTimeout(function(){searchNetworks(query);}, 3000);
}
else
{
clearTimeout(timer);
hide("searchNetworkWrapper");
}
}
...
function searchNetworks(query)
{
var ajaxObject, params, path;
ajaxObject = getAjaxObject();
params = "?q=" + query;
path = getInternalPath() + "searchNetworks" + params;
ajaxObject.open("GET", path, true);
ajaxObject.send();
ajaxObject.onreadystatechange = function()
{
if(ajaxObject.readyState == 4 && ajaxObject.status == 200)
{
setInnerHtml("searchNetworkWrapper", ajaxObject.responseText);
}
else if (ajaxObject.readyState == 4 && ajaxObject.status != 200)
{
getErrorReport("Error Searching Networks", "search our database for the network you are looking for");
}
};
}
您已經標記了這個'jQuery',那麼爲什麼不使用'jQuery.ajax'?它會大大簡化你的生活。 – meagar
標記已移除。對於那個很抱歉。 – gmustudent