我想用 Scalajs-react 和 Ajax 发送一个文件。发送部分很容易使用myAjax.send(requestBody: js.Any)
方法中的onSubmit
方法form
(我注意用 来停止事件传播preventDefault
)。要构建我使用的请求正文FormData(event.target)
。
def f(e: ReactFormEvent) = {
Ajax
.post("http://localhost:9000/rpc/v1/test/update-dataset")
.setRequestHeader("X-Requested-With", "XMLHttpRequest")
.send({
new FormData(
e.target
.asInstanceOf[dom.raw.HTMLFormElement]
)
})
.validateStatusIs(200)(Callback.throwException)
.asCallback
}
Form(onSubmit = e => f(e) >> e.preventDefaultCB)(
FormGroup("groupInput")(
FormFile(label = "Input")(),
UncontrolledFormControl(ref = ref, defaultValue = "abc")()
),
Button(`type` = "submit")("Submit")
)
看起来不错,但由于某种原因,请求正文不包含任何内容(例如:)------WebKitFormBoundaryAnYzDUdxWxA8hrJR--
,就好像FormData
没有设法从表单中检索数据一样。这是两个孩子的打印输出,e.target
我们可以看到两个输入都有一个非空的value
:
__reactFiber$ipxb5pt9wbi,[object Object],__reactProps$ipxb5pt9wbi,[object Object],_wrapperState,[object Object],__reactEvents$ipxb5pt9wbi,[object Set],value,C:\fakepath\artifacts.zip,_valueTracker,[object Object]
__reactFiber$ipxb5pt9wbi,[object Object],__reactProps$ipxb5pt9wbi,[object Object],_wrapperState,[object Object],__reactEvents$ipxb5pt9wbi,[object Set],value,abc,_valueTracker,[object Object]
注意:当我手动append
将项目添加到 中FormData
时,正文中存在请求。
我究竟做错了什么?