scala.js 客户端中的表单处理/访问 scala.js 客户端中的表单

scala.js form processing in client / access to form on scala.js client

我想提交一个表单并向用户展示带有微调器的过程并重新加载新信息。

@JSExport
  def addToCart(form: html.Form): Unit = {
    form.onsubmit = (e: dom.Event) => {
      e.preventDefault()
    }
    val waitSpan = span(
      `class` := Waiting.glyphIconWaitClass
    )
    val waiting = form.getElementsByTagName("button").head.appendChild(waitSpan.render)
    dom.window.alert(JSON.stringify( form.elements.namedItem("quantity") ))
    Ajax.InputData
    Ajax.post(form.action,withCredentials = true).map{q =>
      //
    }
  }

我无法访问表单数据。我也无法执行 ajax 调用来验证表单并执行它。我找不到办法。有人有想法吗?

jQuery 有帮助。我现在用它们来序列化表单。但是现在我不再能够使用 bindOfRequest()

来玩表格了
val jForm = $("#"+form.id)
val serialized = jForm.serialize()
Ajax.post(s"/js/api/form/${UUID.randomUUID().toString}",withCredentials = false,timeout = 12000,data = serialized,headers = Map("X-CSRFToken"->"nocheck","Csrf-Token"->"nocheck"))

我总是得到:

occurrence%5B%5D=400g&quantity=1&csrfToken=c1606da9a261a7f3284518d4f1fd63eaa8bbb59e-1483472204854-1c5af366c62520883474c160

但现在我不知道我必须做什么。对不起。

def executeAddToCartForm(articleId: UUID) = silhouette.UserAwareAction.async{implicit req =>
    val form = complexCartForm.bindFromRequest()
    Try(form.get) match {
      case Success((i,seq)) => println("article: " + i)
      case _ => println(form.errors.mkString + " " + req.body.asText + " " + URLDecoder.decode(req.body.asText.get,"UTF-8"))
    }
    Future.successful(Ok("danke"))
  }

总是失败:(我会看看反应。

已添加

有时候我需要更多的睡眠!

Ajax.post(
      url = form.action,
      withCredentials = true,
      timeout = 12000,
      data = serialized,
      headers = Map("Content-Type" -> "application/x-www-form-urlencoded")
    )

有了这个: headers = Map("Content-Type" -> "application/x-www-form-urlencoded") 我可以像往常一样使用 bindFromRequest() :)

咖啡我需要更多