我正在尝试将旧的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=[]
预先感谢
答案 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
. ..
}