用jquery,ebeans在play框架中处理ajax调用

时间:2013-05-31 10:25:09

标签: jquery playframework routes

这是我第一次使用Play框架,我正在尝试设计一个有助于管理机架货架布置的应用程序。我在droppable div上放置了一个背景图像来显示一个机架。我想要做的是,在drop函数存储数据库中的图像位置,以便下次我输入图像并将其定位在同一位置时可以检索它。我通过

获得了顶部和左侧的值

停止:function(event,ui){

    // Show dropped position.
    var Stoppos = $(this).position();
    $(this).addClass("postn");
    var pos = $("div#stop").text("STOP: \nLeft: "+ Stoppos.left + "\nTop: " + Stoppos.top);

}

显示掉落的位置

任何人都可以告诉我 1)我应该如何在Ajax调用中传递数据 2)如何在Applications方法中处理它。

提前完成。

3 个答案:

答案 0 :(得分:1)

管理以保持ajax调用和Applications方法:

//AJAX
    $.ajax({
        type: "POST",
          url: "@routes.Application.myMethod()",
          data: {
              Left:Stoppos.left,
              Top:Stoppos.top
          },
          dataType:"Json",
          success: function(data) {
                 alert("success");
               },
                error :function(){
                    alert("error");

                }


//Applications

    public static Result myMethod() {
        Map<String, String[]> parameters = request().body().asFormUrlEncoded();
        String top = parameters.get("Top")[0];
        String left = parameters.get("Left")[0];
        System.out.println(top+" "+left);
        return ok(Json.toJson(1));
}

一旦我得到它,我会将ebean插入发布到db。

答案 1 :(得分:0)

在播放框架2中,您可以通过ajax示例直接调用控制器操作:

jsRoutes.controllers.YourController.YourMethod().ajax({
            type: "POST",
            url: "url",
            data: yourData,
            dataType: 'text',
            contentType:'application/json',
            success: function(msg){alert(msg)}

在控制器中:

   @BodyParser.Of( play.mvc.BodyParser.Json.class )
    public static Result retrievePlaces(){
response().setContentType( "application/json" );
JsonNode json = request().body().as(JsonNode.class);
JsonNode jsonRequest = request().body().asJson();
String var1= jsonRequest.findPath("yourVar").getTextValue();
String var2= jsonRequest.findPath("YourVae").getTextValue();
        ObjectNode result = Json.newObject();
result.put("status", "OK");
return ok(result);
    }

答案 2 :(得分:0)

在你的javascript成功之后你必须再次调用你的JS方法可能会尝试这个所有的JS文件(当你使用jquery时它会更好)

   !function( $ ) {

     function nameFunction() {
    ...
 }
    nameFunction()
    }( jQuery )

我认为你的javascript没有被调用,在chrome中尝试javascript调试器并在你的js代码id中添加一个断点而不是通过断点传递你的代码没有被调用 所以当你成功的时候请叫“nameFunction()”。 如果你想使用javascript,你必须使用javascript调试器!!!!!