2016-09-26 7 views
0

ajax 호출 후 일부 요소 (목록)를 페이지에 삽입하고 싶습니다. 목록의 각 요소에 대해 t : pagelink를 첨부하고 싶습니다. PrototypeJs를 js 프레임 워크로 사용합니다. 무슨 생각해? 자바 스크립트 코드 조각이기 때문에, ajax via tapestry를 사용하여 pagelink 추가

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

자바 스크립트가 클라이언트에서 (브라우저에서) 실행되고 태피스트리 템플릿이 서버에 렌더링됩니다. 이것은 결코 작동하지 않을 것이다. –

답변

0

랜스 자바는 지적이, 태피스트리 작동하지 않습니다 : 이미 아래의 코드를 테스트했지만 (pagelink는 t 렌더링되지 않음) 작동하지 않습니다 클라이언트에서 실행됩니다. 클라이언트는 해석을 위해 <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]">을 사용하는 것입니다.

here for more info on Zones을 참조하십시오.

0

답장을 보내 주셔서 감사합니다.하지만 해결책을 찾았습니다. processReply 만 사용하면됩니다. 실제로 응답에는 약간의 수정이 필요했습니다.