这是我的代码段:
$.ajax({
type: 'GET',
data: { s: sToSearch },
url: 'http://localhost:9809/handlers/search.ashx',
}).done(function (d) {
sCache[sToSearch.toLowerCase()] = d;
showResult(d);
});
我的问题是,当我以快速率多次调用此ajax时,它会缓存错误的数据,因为sToSearch.toLowerCase()
会很快变化。
我的解决方案是获取传递的数据而不是实际的搜索字符串,即sToSearch.toLowerCase()
,然后缓存它。
问题是如何从键 data
获取值(我希望从{{1}获得值sToSearch
} s
回调函数中的ajax?
看起来像这样的东西
done
答案 0 :(得分:1)
您可以将代码包装在IIFE (immediately-invoked function expression)中,以便将sToSearch
的值保存为局部变量。这样,当sToSearch
变量发生变化时,它就不会发生变化:
(function(search){}
$.ajax({
type: 'GET',
data: { s: search },
url: 'http://localhost:9809/handlers/search.ashx',
}).done(function (d) {
sCache[search.toLowerCase()] = d;
showResult(d);
});
})(sToSearch);
答案 1 :(得分:1)
var search = function(sToSearch){
$.ajax({
type: 'GET',
data: { s: sToSearch },
url: 'http://localhost:9809/handlers/search.ashx',
}).done(function (d) {
sCache[sToSearch.toLowerCase()] = d;
showResult(d);
});
};
search("SOMETHING");
search("SOMETHING Else");
如果您将代码段转换为函数,并且将sToSearch作为参数传递给它,则您的sToSearch值将保留在函数上下文中,并且不会更改。