Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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 将JSON发送到Jersey服务_Javascript_Json - Fatal编程技术网

Javascript 将JSON发送到Jersey服务

Javascript 将JSON发送到Jersey服务,javascript,json,Javascript,Json,我试图将一些json数据发布到使用Jersey框架实现的RESTWeb服务。我使用的不是JAXB或jquery,而是javascript。 我验证了生成的json是正确的,但尽管设置了内容类型“application/json”,但在服务器上它被接收为“application/x-www-form-urlencoded”。 这是我的密码: <html> <head> <script type="text/javascript"> function Di

我试图将一些json数据发布到使用Jersey框架实现的RESTWeb服务。我使用的不是JAXB或jquery,而是javascript。
我验证了生成的json是正确的,但尽管设置了内容类型“application/json”,但在服务器上它被接收为“application/x-www-form-urlencoded”。
这是我的密码:

<html>
<head>
<script type="text/javascript">
    function DisplayFormValues()
    {
        var str = {};
        var elem = document.getElementById('frmMain').elements;

        //alert(elem.length);
        for(var i = 0; i < elem.length-1; i++)
        {
            str[elem[i].name] = elem[i].value;

        }
        document.getElementById('lblValues').innerHTML = str;

        var json = JSON.stringify(str);

        // construct an HTTP request
        var xhr = new XMLHttpRequest();
        xhr.open(document.getElementById('frmMain').method,
                document.getElementById('frmMain').action);
        xhr.setRequestHeader("Content-type", "application/json");
        xhr.setRequestHeader("Content-Length",json.length);
        xhr.setRequestHeader('Accept', 'application/json');


        //alert(json);
        // send the collected data as JSON
        xhr.send(json);


        xhr.onloadend = function() {
            // done
        }
    }
</script>
</head>
<body>
    <form id="frmMain" name="frmMain" action="/JerseyTest/rest/postUser"
        method="post">

        <input name="firstName" value="harry" /> <input name="lastName"
            value="tester" /> <input name="toEmail" value="testtest@test.com" />
        <br /> <input type="submit" value="Test"
            onclick="DisplayFormValues();" />
    </form>
    <hr />
    <div id="lblValues"></div>
</body>
</html>  

我是网络开发新手,不知道上面的代码中缺少了什么。

我将回答我自己的问题,以供稍后访问的人参考。上面的代码是正确的,除了url被点击了两次之外,它工作得很好。第一次,提交按钮的默认操作,然后按照XMLHttpRequest的脚本执行。
这是我在检查Httpfox中的标题后发现的,该标题显示错误为NS\u BINDING\u ABORTED

将输入类型从submit更改为button后,一切正常。

这是一个非正式的操作,但您是否尝试将“Content type”中的“t”大写?它仅使用大写字母,但在检查请求标题后,尝试使用小“t”。还是不走运。
package com.example.jersey.test;


import javax.ws.rs.*;

@Path("/postUser")
public class JsonTest {

    @POST
    @Consumes("application/json")
    @Produces(MediaType.TEXT_PLAIN)
    public String pingPong(String json) {

        return "Answer is "+ json;
    }
}