2012-06-15 2 views
0

저는 플레이 프레임 워크를 처음 접했고 아약스 구현에 관해 질문이 있습니다. 그래서 검색 페이지를 구현했습니다.이 페이지에는 날짜 범위를 다시 전송하는 양식이 있습니다. 그리고 모두 작동합니다. 하지만 아약스와 작동하도록하고 싶었 기 때문에 몇 가지 질문이있었습니다. 컨트롤러에 새 양식 유형을 만들어야합니까? 이전에 내가했던 것처럼? 아니면 수동으로 데이터를 가져올 수 있습니까?아약스 양식 - 정보 얻기

그래서 현재 내 HTML에서 나는 다음과 같은 형태를 따른다 :

<form action="@routes.History.search()" class="pull-right" id="formHistory"> 
      MinDate: <input id="mindate" name="mindate" class="input-small" type="text"> 
      MaxDate: <input id="maxdate" name="maxdate" class="input-small" type="text"> 
      <button class="btn" type="submit">Search</button> 
     </form> 

여기 내 자바 스크립트입니다 :

$('#formHistory').submit(function(evt) { 
      $('#errors').show(); 
      $.ajax({ 
       type: 'POST', 
       url: jQuery("#formHistory").attr("action"), 
       data: jQuery("#formHistory").serialize(), 
       dataType: "json", 
       success: function(data) { 
        alert('History Search'); 
        $("tableHistory").find("tr:gt(0)").remove(); 
        alert(data.id[0].source); 
       }, 
       error: function(data) { 
        $('#errors').shows(); 
        alert('History search failed'); 
       } 
      }); 
      return false; 
     }); 

내 history.java 파일

나는 밖으로 JSON 정보를 얻을 필요 . 이전에 사용하여이 작업을 수행했습니다

Form<Login> loginForm = form(Login.class).bindFromRequest(); 

그러나 최소 및 최대 날짜가있는 개체가 없으므로 수동으로 json 정보를 얻을 수 있습니까?

public static Result search() { 
//So here I would like to get the form information 
} 

다음 질문은 역순으로 수행하는 방법입니까? 일단 내가 최대 및 최대 날짜를 얻었다면, 데이터베이스에서 정보를 얻었으므로 응답을 다시 보내야합니다. 내가 데이터 목록과 json 응답을 다시 보내야하고 어떻게 자바 스크립트에서 이것을 처리합니까? 또는 서버에서 html을 만들고 이것을 문자열로 보내고 apporpriate 요소에 추가합니까? 또는 일부 데모에서 본 다른 옵션은보기를 작성하고이를 전달하고 작은보기를 렌더링하는 것입니다.

답변

0

나는 그것을 남겨두고 아약스를 사용하지 않았다. 하지만 그것을 사용하려는 경우 나는 아약스 요청을 사용합니다 :

jsRoutes.controllers.Application.ajaxCommand().ajax({ 
    data : { 
     "var1" : "a", 
     "var2" : "b" 
    }, 
    success : function(data) { 
     // .. DO something 
    }, 
    error : function(data) { 
     // .. DO something 
    } 
}); 

및 서버 측에서 DynamicForm를 사용 뭔가 같은 :

public static Result ajaxCommand() { 
    DynamicForm data = form().bindFromRequest(); 
    String var1 = data.get("var1"); 
    String var2 = data.get("var2"); 
    // .. Do something 
} 
0

아약스로 보내기 전에했던 것처럼 양식에서 데이터를 가져올 수 있어야합니다 . 당신이 일을 얻을 수없는 경우에, 당신은 당신의 제안을 모두 유효합니다, 당신은 다시 클라이언트로 데이터를 전송하는 방법에 관해서는

Map<String, String[]> params = request().body().asFormUrlEncoded(); 

수동으로 데이터를 얻을 수 있습니다. 가장 쉬운 방법은 <html> 및 < 본문 > 태그없이보기를 렌더링하고 jQuery를 사용하여 결과를 요소에 넣는 것입니다.

success: function(data) { 
    $('#myContentDiv').html(data); 
} 

json 접근 방식은 약간 더 나은 성능을 제공하지만 구현하기가 훨씬 더 복잡합니다. 많은 사람들은 html 접근법이 서버에서 많은 자원을 사용하기 때문에 나쁜 접근이라고 주장 할 것입니다. 이 인수는 PHP, Ruby on Rails 또는 Play 1.x에서도 마찬가지지만 플레이 2에서는 뷰가 완전히 컴파일되고 렌더링 프로세스가 매우 빠릅니다.

json 접근 방식을 선택하는 경우 knockout.js과 같은 것을 사용하는 것이 좋습니다.