2016-09-26 4 views
0

ajax呼び出しの後に、いくつかの要素(リスト)をページに挿入したいと思います。リストの各要素について、t:pagelinkを添付したいと思います。私はjsフレームワークとしてPrototypeJsを使用します。何かお考えですか? JavaScriptのスニペットがあるので、 pagelinkをタペストリーのajax経由で追加する

new Ajax.Request('my_service_url', { 
 
    onSuccess: function(response) { 
 
\t response.responseJSON.data.each(function(item){ 
 
\t \t var li = '<li>'+ 
 
\t \t '<span>'+item.title+'</span>'+ 
 
\t \t '<t:pagelink page="examples/navigation/PageLinks2">'+item.link+'</t:pagelink>'+ 
 
\t \t '</li>'; 
 
\t \t $('mylist').insert(li); 
 
\t }); 
 
    } 
 
});

+1

ブラウザ上でJavaScriptが実行され、タペストリーテンプレートがサーバー上でレンダリングされます。これは決してうまくいかない –

答えて

0

ランスJavaが指摘したように、これは、タペストリーでは動作しません:私は、すでに以下のコードをテストしているが、(pagelinkそれはトンをレンダリングしていない)動作しません クライアント上で実行されます。クライアントは解釈のために<t:pagelink>タグをTapestryに提出することはできません。

代わりに行う必要があるのは、TapestryのAjaxの意味、特にZoneコンポーネントを使用することです。 <t:zone>...</t:zone>はHTML文書のセクションを定義し、新しいバージョンに置き換えられ、Tapestryによって.tmlからhtmlにレンダリングされます。あなたの<t:zone>中のSO

、必要に応じていくつかの条件にか(すなわち<t:if>または<t:loop>タグ付き)、いくつかのループに基づき、おそらく動的に、<t:pagelink>年代を追加します。次に、AJAXイベントをTapestryに送り返すためのメカニズムを使用します。 1つの簡単なオプションは<t:actionlink zone="[ID of your zone]">を使用することです。

here for more info on Zonesを参照してください。

0

ご返信ありがとうございますが、解決策を見つけました。ただprocessReplyを使用して、それは大丈夫です。実際、応答には少し修正が必要でした。

関連する問題