获取从Jquery ajax传递的数据

时间:2015-02-16 22:15:31

标签: jquery html asp.net ajax

这是我的代码段:

$.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

2 个答案:

答案 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值将保留在函数上下文中,并且不会更改。