2017-10-26 11 views
1

xwikiをインストールしました。velocityテンプレート言語を使用してwikiページを生成できました。javacript変数をvelocity変数templeteに渡す

誰でもJavaScriptをvarbleに渡すことができますか?私はこれを得るためにパラメータをサーバに渡す必要があるいくつかのフォーラムに行ったことがありますが、わかりません。以下のファイルを見つけてください。

<script type="text/javascript"> 
function generateFunction() 
{ 
    var variable = document.getElementById('text').value; 
} 
</script> 

#set($test = "variable") 
$test 
+0

velocityまたはvelocity.jsを使用していますか? – user7294900

+0

こんにちは、私は速度(Apache速度テンプレート言語)を使用しています – charan098

答えて

1
それを行うことができない

のApache Velocityテンプレートがあるサーバ上で、ベロシティだけで、テンプレートを取得し、レンダリングしようとすることを意味サーバ側エンジン、

テンプレートのレンダリングが完了した後、クライアントに戻り、クライアントコードをJavascriptとして実行します。

ベロシティの代替はfreemarkerです。これは同様のものですquestion and answer、質問:

がどのようにJavaScriptからのparamで機能をFreeMarkerのコールする

回答:

サーバ側 Freemarkerの機能を呼び出すための クライアント側ウェブブラウザのコードのための方法はありません

+0

私はそれが私をたくさん助けてくれると思います。 – charan098

+0

https://stackoverflow.com/help/someone-answers – user7294900

1

、jqueryのがなければ

$.post('/send/my/var', { 'value' : variable }); 

this XmlHttpRequest documentationを参照してください:あなたはjqueryのを使用しているserver.IfにクライアントからAJAX電話をかけるために、あなたのようなものを持っているでしょう。

そして、サーバ側で、/あなたが行うことができますテンプレートに達しなければならない/私の/ varのURLを送信します。

#set($test = $params.variable) 

をそして、あなたはサーバー側でそれで有用な何かをするだろう、セッション内、データベース内などに格納するようにします。

VelocityからJavascriptに何かを返す必要がある場合は、通常、JSONコードを書式設定し、非同期補完コールバックパラメータをajaxに追加する必要があります電話:

$.post('/send/my/var', { 'value' : variable }, 
    function(data) 
    { 
    // do something with data sent back from the server 
    }); 

同期呼び出しを使用することもできます。つまり、javascriptがサーバーの応答を待つようにすることは可能ですが、一般的にはそれを行うのが悪い考えです。ここでは外挿することはしません。

最後に、適切なエラー処理も実装する必要があります。たとえば、jQueryの場合、構文は次のようになります。

$(document).ajaxError(function(event, jqxhr, settings, message) 
{ 
    console.log(message); 
}); 
+0

実際にサーバー側の速度はXWikiで{{#set($ test = $ request.value)}}にする必要があります。 –