概述
我正在制作一个Kynetx规则集,该规则集将在页面上找到一堆Facebook ID,然后使用Kynetx Facebook模块获取与该Facebook ID相关联的Facebook头像。我有JS在页面上创建一个Facebook ID数组,我可以在KRL中处理一个数组来检索Facebook头像。我没有的是如何在KRL中从客户端到服务器端获取阵列。
如何从KRL的客户端到服务器端获取阵列?
答案 0 :(得分:2)
您可以使用JavaScript数组并将其转换为字符串,如果您在KRL的服务器端decode它就可以使用它。
示例应用代码=> https://gist.github.com/722536
示例app bookmarklet => http://mikegrace.s3.amazonaws.com/forums/stack-overflow/send-array-to-kns-dev-bookmarklet.html
ruleset a60x442 {
meta {
name "array-passing-test"
description <<
array-passing-test
>>
author "Mike Grace"
logging on
}
rule start_your_engines {
select when pageview ".*"
{
notify("Running","...sending array to KNS") with sticky = true;
emit <|
app = KOBJ.get_application("a60x442");
var numbers = [1,2,3,4,5];
nums = JSON.stringify(numbers);
app.raise_event("process_array", {"numbers":nums});
$K("div.KOBJ_message").append("<br/>"+nums);
|>;
}
}
rule process_array {
select when web process_array
foreach event:param("numbers").decode() setting (number)
{
notify("number",number) with sticky = true;
}
}
}
在http://example.com/上使用bookmarklet运行应用的结果
答案 1 :(得分:1)
不幸的是,KRL JS运行时尚不支持将数组发送到服务器端。有一种方法可以完成你想要做的事情。
我构建了一个在此页面上运行的示例应用程序,其中包含一个bookmarklet,用于获取标记问题的标记,并将它们发送到服务器进行处理,然后再返回。
应用代码示例 =&gt; https://gist.github.com/707561
示例app bookmarklet =&gt; http://mikegrace.s3.amazonaws.com/forums/stack-overflow/client-side-array-to-server-bookmarklet.html
逐步探索代码示例
从bookmarklet运行应用程序的结果:
答案 2 :(得分:1)
如果JSON.stringify哈希数组,你也可以做哈希数组。
示例应用
ruleset a60x449 {
meta {
name "pass-hash-in-web-event-test"
description <<
pass-hash-in-web-event-test
>>
author "Mike Grace"
logging on
}
rule start_this_party {
select when pageview ".*"
{
notify("Now running","Building arrays to send to KNS") with sticky = true;
emit <|
var data = {};
data.userData = JSON.stringify(
[
{"name":"MikeGrace","id":234232344},
{"name":"TelegramSam","id":234089790234},
{"name":"Alex","id":2300234234234}
]
);
app = KOBJ.get_application("a60x449");
app.raise_event("process_me_data", data);
|>;
}
}
rule process_arrays_of_data {
select when web process_me_data
foreach event:param("userData").decode() setting (user)
pre {
userName = user.pick("$.name");
userId = user.pick("$.id");
output =<<
<p>
userName: #{userName}<br/>
userId: #{userId}<br/>
</p>
>>;
}
{
append("body", output);
}
}
}
在example.com上运行的结果