【发布时间】:2015-11-25 02:26:45
【问题描述】:
由于某种原因,我的 jQuery ajax 请求无法正常工作。每次我单击调用以下 javascript 的按钮时,POST 都不成功,并且出现错误:
{"status":"KO","message":"error"} (see my controller action method).
如果我使用 curl,它可以正常工作,我会得到“它可以工作!”的响应:
curl --include --request POST --header "Content-type: application/json" --data '{"articleId":28, "isApproved": true}' http://localhost:9000/article/changeStatus
我似乎做的一切都正确,我正在对 json 部分进行字符串化,设置内容类型,这里可能有什么问题?
var d = JSON.stringify({"articleId": articleId, "isApproved": isApproved});
$.ajax({
"type": "POST",
"url": "/article/changeStatus",
"data": d,
"dataType": "json",
"contentType": "application/json;charset=utf-8",
"success": function(p) {
alert('success is ' + p.isSuccess + ' message=' + p.message);
},
"error": function(p) {
},
"complete": function(p){
}
});
我的控制器动作如下:
def changeStatus = Action(BodyParsers.parse.json) { request =>
val changeStatusRequest = request.body.validate[ChangeStatusRequest]
changeStatusRequest.fold(
errors => {
BadRequest(Json.obj("status" ->"KO", "message" -> "error"))
},
cmRequest => {
Ok("it works!")
}
)
}
case class ChangeStatusRequest(articleId: Int, isApproved: Boolean)
读音是:
implicit val changeStatusRequest: Reads[ChangeStatusRequest] = (
(JsPath \ "articleId").read[Int] and
(JsPath \ "isApproved").read[Boolean]
)(ChangeStatusRequest.apply _)
【问题讨论】:
-
您能否向我们展示您验证使用的读取代码。
-
@wwkudu 我添加了读取,对此感到抱歉。
标签: jquery json playframework