代码之家  ›  专栏  ›  技术社区  ›  FishBarFood

DOJO JsonRest-单击后无法更改目标URL

  •  1
  • FishBarFood  · 技术社区  · 8 年前

    我有这个工作 FilteringSelect :

    var jsonStore = new JsonRest  ({
        target: "/ajax_script/autocomplete?term1=" + foo1 + "&term2=" + foo2
    });
    

    但是当我点击一个按钮,改变 term2 foo3 , target 始终与 foo2 .

    我可以在控制台中看到 术语2 的值确实更改为 foo3 ,之前和之后 jsonStore 所以我想知道jsonStore对象是否以某种方式被缓存。

    这是对 目标 ? 有没有办法解决这个问题,或者可能有其他办法?

    编辑Harpreet的答案

    我尝试了将参数传递给 目标 url,但我发现它与 筛选选择 .

    我对 筛选选择 它通过了 searchAttr 属性值设置为JsonRest URL,以便如果我的 搜索属性 是“术语”,用户输入的数据(通过 筛选选择 )然后传递为“term=someusrinput”。

    在我的例子中,我需要传递更多的参数,但使用 store.query() 导致向 JsonRest 不包括“术语”的URL FiteringSelect 这个 store.query 请求包含“term1、term2、term3”参数,但由于不包含“term”(来自 筛选选择 )然后 筛选选择 请求中包含“term”,但由于不包含“term1、term2、term3”而失败!

    我需要向 目标 URL,通过修改 目标 带有查询字符串的URL- 筛选选择 术语被传递并与查询字符串变量组合。

    我面临的问题是我无法通过“重新查询” JsonRest公司 查询字符串的新参数通过 onClick .

    1 回复  |  直到 8 年前
        1
  •  1
  •   Community Dai    7 年前

    这不是将参数附加到URL的正确方式。

    您不需要修改目标。

    检查此示例

    require(["dojo/store/JsonRest"], function(JsonRest) {
    
        var store = new JsonRest({
            target: "/ajax_script/autocomplete"
        });
    
        store.query({
            term1: "foo1",
            term2: "foo2",
        }, {});
        //URL - "/ajax_script/autocomplete?term1=foo1&term2=foo2
    
    });
    

    Dojo将自动附加参数 term1 term2 到每个的父url get , put , add 和另一种方法

    检查此的结果请求URL example

    编辑

    筛选Select+JSONRestStore

    你想要实现的目标是不可能的 筛选选择 。为此,您应该使用 选择 .

    问题是 筛选选择 附加 * 在你键入的每个单词 文本框 属于 筛选选择 例如:如果你键入 k 它将变成 k* 。当它传递给 JsonRest商店 用于查询 它不会 将其视为特殊输入,并且不会对其进行智能修改 搜索,但使用它作为您希望与结果匹配的确切模式。

    var query =  {
        valueToSearch: "k*"
    }
    

    和您的 Url 成为: example.com?要搜索的值=k*

    "k*" == "kite" //false
    

    而不是 使用 文件环选择 你应该使用 选择 然后您的查询将是

    var query =  {
        valueToSearch: "kite"
    }
    

    和您的 Url 成为: example.com?valueToSearch=风筝

    kite==kite//true,因为“kite”将当前选定的值,而不是由用户输入

    我也创建了这个 jsFiddle ,您可以使用控制台的

    检查这个 Another Question From SO

    我可以建议您的可能解决方案是

    1. 使用 选择 小装置

    2. 修改- JsonRest商店 根据您的要求。

    3. 使用JSON请求从远程服务器预加载所有数据,并将其添加到 记忆力 储存后使用,不要头痛。然后您可以使用 筛选选择 没有任何问题。