Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js发送格式怪异的JSON数据_Javascript_Json_Post_Knockout.js_Http Status Code 415 - Fatal编程技术网

Javascript js发送格式怪异的JSON数据

Javascript js发送格式怪异的JSON数据,javascript,json,post,knockout.js,http-status-code-415,Javascript,Json,Post,Knockout.js,Http Status Code 415,我是Knockout.js的初学者,向服务器发送数据时遇到问题。 在我的后端,我有REST服务: @POST @Produces({MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_JSON}) @Path("/smth") public Response smth(MyObj[] values) { return Response.ok().build(); } 其中MyObj对象是: @XmlRootElem

我是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不受支持的媒体类型

ko.utils.postJson("/smth", ko.toJSON(data));
其中数据的定义方式如下:
ko.observearray([])
并填充任务对象:

function Task(data){
    this.linkName = ko.observable(data.linkName);
    this.linkedIssueKey = ko.observable(data.linkedIssueKey).extend({
        required: true
    });
} 
通过查看标题信息中的表单数据,我发现Knockout.js以一种非常奇怪的方式发送数据(表单数据的一部分被省略了,因为它太长了):

问题是我如何解决这个问题,为什么会发生这种情况

p.S.后端休息服务工作正常。通过发送以下请求,使用REST请求发送方进行测试:

[{"linkName":"yo","linkedIssueKey":"zopa"},
{"linkName":"yo","linkedIssueKey":"zopa"}]

问题是
ko.utils.postJSON
需要一个数组

它使用字符串作为索引器。(比如“Hello”[0]是“H”)

试一试


问题是
ko.utils.postJSON
需要一个数组

它使用字符串作为索引器。(比如“Hello”[0]是“H”)

试一试


好吧,现在至少表单数据看起来不错,但我一直得到相同的错误。我假设发生这种情况是因为内容类型是text/html,但应该是:application/jsonWell,现在至少表单数据看起来不错,但我一直收到相同的错误。我假设发生这种情况是因为内容类型是text/html,但应该是:application/json
ko.utils.postJson("/smth", [ko.toJSON(data)]);