2017-01-03 8 views
0

양식을 제출하고 사용자에게 회 전자를 사용하여 프로세스를 표시하고 새 정보를 다시로드하려고합니다.scala.js 양식 처리 클라이언트/scala.js 클라이언트 양식 액세스

@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 => 
     // 
    } 
    } 

나는 양식 데이터에 액세스 할 수 없습니다. 또한 폼을 증명하고 실행하기 위해 아약스 호출을 실행할 수 없습니다. 나는 아무 것도 발견하지 못했다. 누군가 아이디어가 있습니까?

+0

기본적으로 일반적인 JavaScript 페이지에서와 동일한 문제이며 해결책은 거의 동일합니다. 아마 어떤 종류의 프레임 워크를 사용하고 싶을 것이다. 원시 DOM에서 이러한 작업을 수행하는 것은 가능하지만 성가신 일입니다. 더 쉬운 접근법을 제공하기 위해 React 또는 jQuery와 같은 것을 조사하십시오. 이 두 가지 모두 Scala.js에 멋지게 형식화 된 파사드가 있습니다. –

+0

jquery-facade를보고 있는데 아약스 호출을 어떻게 할 수 있는지 잘 모르겠습니다. 그들의 예가 있습니까? –

답변

0

jQuery가 도움이됩니다. 지금은 양식을 직렬화하기 위해 그것들을 사용했습니다.

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

을하지만 지금은 내가해야 할 일을 알고하지는 :하지만 지금은 더 이상 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")) 

이 난 항상 얻을. 죄송합니다.

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")) 
    } 

항상 실패를 얻을 :(내가 반응을 살펴해야합니다

때때로 내가 더 잠이 필요 ADDED이와

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

:.! 헤더 =지도 (" Content-Type "->"application/x-www-form-urlencoded ") 일반적으로 bindFromRequest()를 사용할 수 있습니다.

커피가 더 필요해.

+0

다행이 당신을 위해 ... –