postJSON在Javax-rs API中发布请求

时间:2015-08-11 17:58:40

标签: javascript jquery ajax json

我的问题是,即使每件事看起来都很完美,但我的JSON请求没有达到服务。看起来服务是从客户端接受JSON。我的网络客户端中有任何遗漏的东西。

<!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        $("button").click(function(){

            var url='http://localhost:8080/AlpagoREST/rest/json/metallica/post2/';  
            inputString1 ="{\"location\":\"Location_trial\"}";
            alert(url);
            alert(inputString1);
            $.postJSON = function(url, inputString1, callback) {
                alert("reached here");
                return jQuery.ajax({
                headers: { 
                    'Accept': 'application/json',
                    'Content-Type': 'application/json; charset=utf-8' 
                },
                'type': 'POST',
                'url': url,
                'data': JSON.stringify(inputString1),
                'dataType': 'json',
                'success': callback
                });
            };

        });
    });
    </script>
    </head>
    <body>

    <button>Send an HTTP POST request to a page and get the result back</button>

    </body>
    </html>

当我使用postman Chrome插件向post服务发送post请求时,这非常有效,当我使用来自public static void main的Rest客户端发布Json时也是如此。

    My web service is as below:

        @POST
        @Path("/post2")
        @Consumes(MediaType.APPLICATION_JSON)
        public Response trial(Trial_JSON tjson) {
       System.out.println("reached here in post for Tjson");

       System.out.println("Office Location="+tjson.getLocation());

       String result="Mission done it looks";
            return Response.status(200).entity(result).build();


        }
    -------

Trial_JSON是我的简单pojo类,如下所示。这里没有XML涉及它唯一的简单JSON而不是其他

    public class Trial_JSON {

        private String location;

        public String getLocation() {
            return location;
        }

        public void setLocation(String location) {
            this.location = location;
        }

    }

2 个答案:

答案 0 :(得分:0)

您正在创建postJSON功能,但它看起来并不像您执行它。

       $.postJSON = function(url, inputString1, callback) {
            alert("reached here");
            return jQuery.ajax({
            headers: { 
                'Accept': 'application/json',
                'Content-Type': 'application/json; charset=utf-8' 
            },
            'type': 'POST',
            'url': url,
            'data': JSON.stringify(inputString1),
            'dataType': 'json',
            'success': callback
            });
        };

尝试使用

调用它
$.postJSON(url, inputString1, function(data) {
    console.log("Done posting");
});

答案 1 :(得分:0)

尝试进行以下两项更改:

inputString1 ='{"location":"Location_trial"}';

'data': inputString1,