【发布时间】:2023-04-02 17:09:01
【问题描述】:
我是 Knockout.js 的初学者,在向服务器发送数据时遇到问题。 在我的后端,我有 REST 服务:
@POST
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
@Path("/smth")
public Response smth(MyObj[] values) {
return Response.ok().build();
}
MyObj 对象在哪里:
@XmlRootElement
public class MyObj {
@XmlAttribute
private String linkName;
@XmlAttribute
private String linkedIssueKey;
public MyObj (String linkName, String linkedKey) {
this.linkName = linkName;
this.linkedIssueKey = linkedKey;
}
public MyObj () {
}
public String getLinkName() {
return linkName;
}
public String getLinkedIssueKey() {
return linkedIssueKey;
}
public void setLinkedIssueKey(String linkedIssueKey) {
this.linkedIssueKey = linkedIssueKey;
}
public void setLinkName(String linkName) {
this.linkName = linkName;
}
@Override
public String toString() {
return "MyObj{" +
"linkName='" + linkName + '\'' +
", linkedIssueKey='" + linkedIssueKey + '\'' +
'}';
}
问题是我在使用 Knockout.js 发送数据时收到错误 415 Unsupported Media Type:
ko.utils.postJson("/smth", ko.toJSON(data));
data 定义如下:ko.observableArray([]);
并填充了 Task 对象:
function Task(data){
this.linkName = ko.observable(data.linkName);
this.linkedIssueKey = ko.observable(data.linkedIssueKey).extend({
required: true
});
}
通过查看 Header 信息中的表单数据,我发现 Knockout.js 以一种非常奇怪的方式发送数据(部分表单数据已被省略,因为它太长了):
问题是我该如何解决这个问题,为什么会这样?
附:后端 REST 服务正常工作。通过发送以下请求与 REST 请求发送者进行测试:
[{"linkName":"yo","linkedIssueKey":"zopa"},
{"linkName":"yo","linkedIssueKey":"zopa"}]
【问题讨论】:
标签: javascript json post knockout.js http-status-code-415