在动态功能中缓存ajax请求

Cache ajax request in dynamic function

本文关键字:ajax 请求 缓存 动态 功能      更新时间:2023-09-26

我正在为表单创建者网站创建一组用户友好的公式(类似于excel)。我有一个Lookup函数,他们可以用来指定他们想要的值和他们正在查找的值,例如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)。我猜这与动态有关?这里不太确定,因为这对我来说是新的。

如果我理解正确的话,您有onblur正在进行ajax调用的输入字段,并且您只希望在字段中的数据发生更改时激发它们?

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

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

只有当输入元素的datadirty='true'时,ajax调用才会启动

if(myInput.getAttribute('data-dirty')=='true')
{ 
    //fire ajax call
}

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