Ajax Post Call Play 2 Framework 2.6.19始终不向控制器发送

时间:2018-09-30 14:38:20

标签: ajax playframework-2.0

我正在尝试将旧的Play 2 Framework应用更新为最新版本2.6.19

一个视图使用Post Query Ajax将表单发送到控制器,但是现在更新代码后,绑定在表单中的数据始终为空(“无”)。

如果我使用文档并编写了一个ScalaForm,数据就到了,但是我不知道是否可以将脚本与Scala Form Helpers混合使用,因为我需要在提交数据之前和之后进行一些操作。

我怀疑问题可能出在过滤器或application.conf中,并且无法成功绑定数据。

我正在使用jquery 1.11.2

这是我在旧版本中使用的代码,但现在无法使用。

视图:

<form method="post" id="entrarLTerme">
<h4>Término Actual:</h4>
<p class="redex" contenteditable="true" id="ent" spellcheck="false"></p>
<button id="accepta" type="submit" value="val">@messages.messages("tilcgfs.entrar")</button>
</form>

<script>
    $("#entrarLTerme").submit(function (e) {
                uncheck();
                var formURL = $(this).attr("action");
                var aux = $("#ent").text();
                $.ajax(
                        {
                            url: formURL,
                            type: "POST",
                            data: {valor: aux, op: "0", pag: "2"},
                            success: function (data) {
                                // Call some JS functions
                                }
                            },
                            error: function () {
                                // Call some JS functions
                            }
                        });
                e.preventDefault();
            });
</script>

和控制器:

class TilcWT @Inject()(component: ControllerComponents, instanciesTilcWT: InstanciesTilcWT,langs: Langs) extends AbstractController(component) with I18nSupport {

  implicit var messages: Messages = MessagesImpl(Lang("ca"), messagesApi)

  val opcionsDefinicions = Form(
    tuple(
      "valor" -> text,
      "op" -> text,
      "pag" -> text))

  def opcions = Action { implicit request =>
    val usuari: String = request.session.get("user").get
    opcionsDefinicions.bindFromRequest.fold(
      formWithErrors => {
        BadRequest("Not Alloweddd")
      },
      options => {
        val valor = options._1
        val opt = options._2
        val page = options._3
        BadRequest("Not Alloweddd")
      }
    )
    BadRequest("Not Allowed")
  }

}

在使用折叠功能之前,我可以“毫无问题”地获得它。调试器正确到达了“操作”方法,并且BadRequest当然是虚拟的。

我的application.conf看起来像这样:

# The application languages
# ~~~~~
play.i18n.langs=["en","ca","es"]

play.filters.enabled=[]

预先感谢

1 个答案:

答案 0 :(得分:0)

由于CSRF protection,我在Play 2.6中遇到了一些问题。

要检查您的问题是否与之相关,请首先尝试停用此CSRF过滤器,如此处建议的:How can I disable the CSRF filter on Play 2.6?

然后,您当然必须使用Play助手将CSRF添加到您的Post和URL请求中,例如:

@form(routes.ItemsController.save()) {
    @CSRF.formField
    . ..
}