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

私はフォームデータにアクセスできません。また、フォームを証明して実行するためにajax呼び出しを実行することもできません。私は決して見つけませんでした。誰かがアイデアを持っていますか?

+0

これは、通常のJavaScriptページにあるのと基本的に同じ問題です。解決方法はほとんど同じです。おそらく、何らかのフレームワークを使用したいと思うかもしれません。生のDOMでこれらのことを行うことは可能ですが、迷惑です。より簡単なアプローチを提供するために、ReactやjQueryのようなものを調べてください。これらの両方はScala.jsにうまく型付けされたファサードを持っています。 –

+0

私はあなたにjquery-facadeを見ています。私はどのようにしてajax呼び出しを行うことができないのでしょうか。彼らの例はありますか? –

答えて

0

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

を追加しました私は通常、bindFromRequest()を使用することができます:

コーヒー私はもっと必要です

+0

あなたのためにうまくいってうれしい... –

関連する問題