【问题标题】:Server side validation in playframework 2.0 in a jquery pop up弹出 jquery 中 playframework 2.0 中的服务器端验证
【发布时间】:2013-08-29 15:30:06
【问题描述】:

我正在使用播放框架 2.0.1。我在 jquery 弹出窗口中有一个表单,我必须在服务器端进行验证并在不关闭弹出窗口的情况下显示验证消息。

我尝试使用 zen 任务示例中给出的 java 脚本路由,但我认为没有示例可以从客户端进行 ajax 调用。

我找不到在 play framework 2.0 中使用 ajax 的任何其他示例。

感谢任何帮助。

谢谢。

【问题讨论】:

    标签: jquery playframework-2.0


    【解决方案1】:

    在客户端,您可以调用自己的 javascript 函数,该函数将收集您的所有表单输入:

    $("#myForm").submit(function(evt) {
        evt.preventDefault();
        $.ajax({
            type: "POST",
            url: "@routes.MyController.myMethod()",
            data: { username: $("#myForm #username").val(), age: $("#myForm #age").val() },
            dataType: "json",
            success: function(data, textStatus, jqXHR) {
                console.log("Success of call");
                //Do what you want here
                //For example close the jquery opened panel
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log("Failure of call");
            }
        }
        return false;
    });
    

    在服务器端,您会将传入请求视为任何其他请求(这是一个 scala 示例,适用于 java):

    def connectWithFB = Action { implicit request =>
        Form(tuple("username" -> nonEmptyText, "age" -> nonEmptyText)).bindFromRequest.fold(
            errors =>  {
                BadRequest(toJson(Map("status" -> "0", "error" -> "Missing fields or wrong field")))
            },
            success => {
                Ok(toJson(Map("status" -> "1")))
            }
        )
    }
    

    【讨论】:

    • 非常感谢您的即时回复。你能解释一下如何调用java脚本方法吗?因为我是 jquery 的新手。我有以下代码。 @helper.form(action = routes.Drabble.submit, 'id -> "myForm") { @inputText(drabbleForm("title")) } 并且即使在未输入必填字段后弹出 ic 也会关闭。请帮忙。
    • 您应该考虑将您的问题拆分到不同的 StackOverflow 线程中。 javascript、jQuery、Ajax、Play 模板和 Play 控制器是非常不同的主题。如果您对其中一个人了解不够,请在 SO 上提出一个非常具体的问题。
    • 感谢 kheraud 的回复。
    • 如果它回答了您的问题,请将答案标记为好的答案(绿色检查)
    【解决方案2】:

    使用 bootstrap 可以很容易地进行验证, 例如:

    <div class="form-group" style="position:relative;left:20px;">
       <label class="sr-only" for="exampleInputEmail2"><strong>  Genre</strong>
                </label>
         <input type="text" name="genre" required />
    
    
         </div>
    

    你所要做的就是说它是这样要求的

    <input type="text" name="genre" required />
    

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 2012-09-06
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      相关资源
      最近更新 更多