reactjs - scalajs-react:Ajax GET 与 DELETE 的意外差异
问题描述
我在 scalajs-react 中有以下用于 GET 和 DELETE 用例的 Ajax 代码。
删除:
val ajax = Ajax("DELETE", "http://localhost:8081/delete/"+id)
.setRequestContentTypeJsonUtf8
.send("")
.onComplete { xhr =>
xhr.status match {
case 200 => {
println("Success")
....more code
)
}
case _ => {
println("Status is"+xhr.status)
Callback.log(xhr.responseText)
}
}
}
ajax.asCallback
...得到:
val ajax = Ajax("GET", "http://localhost:8081/fetch/"+id)
.setRequestContentTypeJson
.send("")
.onComplete { xhr =>
xhr.status match {
case 200 => {
println("Success")
....more code
}
case _ => {
println("Status is"+xhr.status)
Callback.log(xhr.responseText)
}
}
}
ajax.asCallback
虽然 GET 在请求完成时调用 onComplete 中的代码按预期工作,但对于 DELETE,情况并非如此。对于 DELETE onComplete 代码永远不会在请求完成时调用,即使在服务器端删除操作成功。
为什么会有这种行为差异?
解决方案
ajax.asCallback
具有Callback
应该通过调用来执行的类型.runNow()
。我相信,您的GET
查询工作正常,因为您在代码中的某个地方.runNow()
为它执行此操作,但您不是为您的DELETE
查询执行此操作。
这是您的两个示例都可以正常工作:
https://scastie.scala-lang.org/mikla/GEcLg2OJSLWhjbcagaxZ9g/10(检查浏览器控制台输出)
推荐阅读
- reactjs - Reacharts:我需要帮助从 json 对象获取数据
- android-listview - 为什么列表视图为空且不显示数据?
- git - 当我将一组提交合并到分支 dev 时,我停留在变基阶段
- sql - 哪个通用数据库库在 Google Cloud Run 和类似服务上的成本最低(例如内存和 cpu 使用)?
- java - Kafka avrò 找不到主题
- amazon-web-services - 如何在启动 AWS 实例时创建用户和密码
- ssl - 捕获的 TLS 握手之间的差异
- python - 如何通过 linux 脚本激活 python env?
- python - 如何根据分割后行第一部分的最大重复次数对行进行排序?
- r - 在闪避的ggplot2箱线图中添加组内和组之间的显着性条