在动态函数中缓存ajax请求

时间:2016-05-04 20:55:02

标签: javascript jquery ajax

我正在为表单创建者站点创建一组用户友好的公式(类似于excel)。我有一个查找功能,他们可以用来指定他们想要的值和他们正在查找的值,例如Lookup(IWantThisVal,ByLookingUpThisVal)。通过持久层中的配置设置,我可以创建此功能

var formula "return $.ajax({ async: false, cache: true, type: \"get\"," 
        + ("url: \"" + this.strategy.resource + "/\" + " + segments[1].trim() 
        + " + \"/\" + " + segments[0].trim()) + "}).responseText;";

return new Function(formula);

还有一点(我知道async已被弃用),但我会遗漏细节。我的问题是AJAX调用缓存。我测试了该函数,每次都看到存储过程运行(称为onblur)。我猜它与动态有关吗?这里不太确定,因为这对我来说是新的。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你有onblur进行ajax调用的输入字段,你只希望它们在字段中的数据发生变化时触发?

您可以为每个input提供输入字段的自定义html data-属性,例如 data-dirty ='false'

文本框的onchange事件会将属性设置为 data-dirty ='true'

如果输入元素

的data-dirty ='true',则只会触发ajax调用
if(myInput.getAttribute('data-dirty')=='true')
{ 
    //fire ajax call
}

在ajax调用结束时(成功,错误)重置为data-dirty ='false',以防止它重新发生该字段的每个onblur事件