1

概要

私は、ページ上にある一連の Facebook ID を見つけてから、Kynetx Facebook モジュールを使用して、その Facebook ID に関連付けられた Facebook アバターを取得する Kynetx ルールセットの構築に取り組んでいます。ページに Facebook ID の配列を作成する JS があり、KRL で配列を処理して Facebook アバターを取得できます。私が持っていないのは、KRL でクライアント側からサーバー側に配列を取得する方法です。

KRL のクライアント側からサーバー側に配列を取得するにはどうすればよいですか?

4

3 に答える 3

2

JavaScript 配列を取得して文字列に変換すると、KRL のサーバー側でデコードすると機能します。

アプリコードの例 => https://gist.github.com/722536

サンプルアプリのブックマークレット => 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/のブックマークレットからアプリを実行した結果 アプリを実行した結果

于 2010-11-30T22:32:16.070 に答える
1

答え

残念ながら、KRL JS ランタイムはサーバー側への配列の送信をまだサポートしていません。それでもやりたいことを実現する方法はあります。

質問にタグ付けされたタグを取得し、それらをサーバーに送信して処理してから戻ってくるブックマークレットを使用して、このページで実行されるサンプルアプリを作成しました。

アプリコードの例=> https://gist.github.com/707561

サンプルアプリのブックマークレット=> http://mikegrace.s3.amazonaws.com/forums/stack-overflow/client-side-array-to-server-bookmarklet.html

コード例の段階的な説明

  1. JS 配列でテキストを収集する
  2. 配列をcsv文字列に変換し、カンマを追加して正規表現の分割を容易にします
  3. csv 文字列を使用して KNS にイベントを発生させる
  4. プロセス ルールは最初の値を引き出します
  5. 残りの値は新しい変数に保存されます
  6. 最初の値は通知に入ります
  7. postlude は残りの値を自分自身に送信します
  8. 完了するまでループし、ディレクティブをブラウザに返します

ブックマークレットからアプリを実行した結果:

ブックマークレットからアプリを実行した結果

于 2010-11-20T02:57:58.607 に答える
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 で実行した結果

代替テキスト

于 2010-12-01T23:24:09.940 に答える