gpt4 book ai didi

javascript - DOJO JsonRest - onClick 后无法更改目标 URL

转载 作者:行者123 更新时间:2023-11-27 23:23:35 26 4
gpt4 key购买 nike

我可以使用FilteringSelect:

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

但是当我单击将 term2 的值更改为 foo3 的按钮时,target 始终保留为 foo2 >.

我可以在控制台中看到 term2 的值确实更改为 foo3,无论是在 jsonStore 实例化之前还是之后,所以我想知道 jsonStore 对象是否以某种方式缓存。

这是对target的不当使用吗?有没有办法解决这个问题,或者有替代方案吗?

编辑 Harpreet 的答案

我确实尝试过这种将参数传递到 target url 的方法,但我发现它与 FilteringSelect 不兼容。

我对 FilteringSelect 的理解是,它将 searchAttr 属性值传递给 JsonRest URL,因此,如果我的 searchAttr 是“term” ,用户在输入中输入的数据(通过 FilteringSelect)然后作为“term=someusrinput”传递。

在我的例子中,我需要传递更多参数,但使用 store.query() 会导致对 JsonRest URL 的单独请求,其中不包含来自 FiteringSelect 的“term”。 store.query 请求包含“term1、term2、term3”参数,该请求失败,因为它不包含“term”(来自 FilteringSelect),然后 FilteringSelect 请求包含“term”,但失败,因为它不包含“term1、term2、term3”!

我需要将其他参数传递到 target URL,这通过使用查询字符串(FilteringSelect 术语)修改 target URL 来实现被传递并与查询字符串变量组合。

我面临的问题是,我无法通过 JsonRest 使用通过 onClick 修改的查询字符串的新参数“重新查询”。

最佳答案

这不是将参数附加到 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 会自动将参数 term1term2 附加到每个 getput 的父 URL, add 和另一个方法

检查此example的结果请求URL

编辑

FilteringSelect + JSONRestStore

使用 FilteringSelect 无法实现您想要实现的目标。为此,您应该使用选择

Issue is FilteringSelect appends * at each word you type in the Textbox of FilteringSelect. eg: if you type k it will become k*. When it is passed to JsonRestStore for query it will not treat it as special input and will not modify it for intelligent search but use it as exact Pattern you want to match wtth the result.

var query =  {
valueToSearch: "k*"
}

and your Url become: example.com?valueToSearch=k*

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

不要使用FileringSelect,而应该使用Select,然后您的查询将是

var query =  {
valueToSearch: "kite"
}

and your Url become: example.com?valueToSearch=kite

kite == kite //true, as "kite" will current selected value, not entered by user

我还创建了这个jsFiddle ,您可以使用控制台来尝试并检查结果

检查这个Another Question From SO

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

  1. 使用选择小部件

  2. 根据您的要求修改 - JsonRestStore

  3. 使用 JSON 请求从远程服务器预加载所有数据,并将其添加到内存存储中,然后轻松使用它。然后您就可以使用FilteringSelect而不会出现任何问题。

关于javascript - DOJO JsonRest - onClick 后无法更改目标 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35170236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com