Ajax Post Call Play 2 Framework 2.6.19 отправляет всегда Нет на контроллер - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь обновить старое приложение Play 2 Framework до последней версии 2.6.19

В одном представлении используется Post Query Ajax для отправки форм контроллеру, но теперь после обновления кода данные, связанные в форме, являютсявсегда пусто («нет»).

Если я использую документацию и пишу ScalaForm, данные поступают, но я не могу знать, могу ли я смешивать скрипты с помощниками форм Scala, потому что мне нужно выполнить некоторыедействия до и после отправки.

Я подозреваю, что, возможно, проблема в фильтрах или в чем-то в 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")
  }

}

Прежде чем я использую функцию сгиба, я "получаю" это без проблем.Отладчик корректно возвращается к методу «opcions», и, конечно, BadRequest являются фиктивными.

Мой application.conf выглядит так:

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

play.filters.enabled=[]

Заранее спасибо

1 Ответ

0 голосов
/ 16 октября 2018

У меня были проблемы с записями в Play 2.6, из-за этой защиты от CSRF .

Чтобы проверить, связана ли ваша проблема с ней, сначала попробуйте отключить этот фильтр CSRF, как рекомендованоздесь: Как я могу отключить фильтр CSRF в Play 2.6?

Тогда, конечно, вы должны использовать помощники Play, чтобы добавить CSRF в ваши запросы Post и URL, например, например:

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