对于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...GET:
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,情况并非如此。For DELETE onComplete代码永远不会在请求完成时调用,即使在服务器端delete操作成功。
为什么会有这种行为上的差异?
发布于 2021-10-11 19:43:47
ajax.asCallback的类型为Callback,应该通过调用.runNow()来执行。我相信,您的GET查询工作得很好,因为在代码下面的某个地方,您可以为它执行此.runNow(),但不能为您的DELETE查询执行此操作。
下面是你的两个例子都运行得很好:
https://scastie.scala-lang.org/mikla/GEcLg2OJSLWhjbcagaxZ9g/10 (检查浏览器控制台输出)
https://stackoverflow.com/questions/69513517
复制相似问题