여기에 비슷한 질문이 몇 개 있었지만 실제로 내 문제를 해결하는 데 도움이되지 않았습니다.Play Framework에서 AJAX 호출의 부분 렌더링
페이지에 테이블이 있고 클릭시 테이블을 다시 렌더링해야하는 버튼이 있습니다 (다른 페이지 매김 매개 변수, 정렬 등 사용).
여러 접근법을 시도하고 js 라우터가 내장 된 컨트롤러에 값을 전달하는 데 성공했지만 값이 ajax 호출을 사용하여 백엔드로 전달되었으므로 테이블을 다시 렌더링 할 수 없습니다.
내 임베디드 라우터는 다음과 같습니다
@helper.javascriptRouter("jsRoutes")(
routes.javascript.UserController.getUsers
)
그리고 내가 좋아하는 뭔가가있는 페이지에서 호출됩니다 $ 아약스 (jsRoutes.controllers.UserController.getUsers (3 사실, "로그인"));
이제 마지막으로, getUsers() 호출의 결과로 테이블을 다시 렌더링하고 싶습니다.
간단히 전화 :
public Result getUsers(int size, boolean isAsc, String sortBy) {
......
Logger.info("Returning " + size + " users");
return Results.ok(usersPage.render(userDtos));
}
나를 위해 작동하지 않습니다.
답장을 보내 주셔서 감사합니다. 두 번째 접근법에 대해 좀 더 구체적으로 설명 할 수 있습니까? HTML을 반환하는 것은 나를위한 옵션이 아닙니다. templating에 관해서는, 나는 build-in twirl 템플릿 엔진에 충실 하겠지만, 그것은 나의 주요 관심사가 아닙니다. ajax로 작업을 호출 할 때 HTML 클라이언트 측을 손으로 렌더링하는 방법에 대한 예제를 제공 할 수 있습니까? – yuranos87
왜 HTML을 반환 할 수 없습니까? 실제로 이것은 HTML 조각 (귀하의 경우 테이블) 일 뿐이므로이 단편은 DOM 노드를 업데이트합니다. 전체 페이지 새로 고침이 없습니다. JSON 접근 방식은 JavaScript에서 HTML 렌더링을 의미합니다. Twirl을 사용하여이를 수행 할 수는 없습니다. – user2595529
다음은 클라이언트 측 "수동"렌더링의 두 가지 예입니다. http://jsfiddle.net/mjaric/sEwM6/ 및 http://stackoverflow.com/questions/21184733/render-json-into-html 테이블이 복잡한 당신은 정말로 템플릿 엔진이나 완전한 프레임 워크를 사용해야합니다. – user2595529