在ajax调用之后,我想在页面中注入一些元素(列表)。对于列表的每个元素,我想附加t:pagelink。我使用PrototypeJs作为js框架。你知道吗? 我已经测试了下面的代码但不起作用(它不呈现t:pagelink)
new Ajax.Request('my_service_url', {
onSuccess: function(response) {
response.responseJSON.data.each(function(item){
var li = '<li>'+
'<span>'+item.title+'</span>'+
'<t:pagelink page="examples/navigation/PageLinks2">'+item.link+'</t:pagelink>'+
'</li>';
$('mylist').insert(li);
});
}
});
答案 0 :(得分:0)
这不适用于Tapestry,正如Lance Java指出的那样,因为Javascript片段是在客户端上执行的。客户无法将<t:pagelink>
标记提交给Tapestry进行解释。
您需要做的是使用Tapestry的Ajax语义,特别是Zone组件。 <t:zone>...</t:zone>
定义HTML文档的一部分,将替换为新版本,由Tapestry从.tml呈现为html。
因此,在您的<t:zone>
中,根据需要添加<t:pagelink>
,可能会根据某些情况或某些循环动态添加<t:if>
或<t:loop>
}标签)。然后,使用某种机制将AJAX事件发送回Tapestry。一个简单的选择是使用<t:actionlink zone="[ID of your zone]">
。
答案 1 :(得分:0)
感谢您的回复,但我找到了解决方案。只需使用processReply即可。实际上,响应需要稍作修改。