为什么我的POST方法无法接收这个ajax?

时间:2016-11-23 15:45:46

标签: javascript java jquery json ajax

我有这个javascript应该将JSON发送到我的escreve POST REST方法

$(document).ready(function() {
    $("#idform").on('submit', function(e) {
        e.preventDefault();
        alert($("#idform").serialize());
        $.ajax({
            url : 'http://localhost:8080/DBRest/rest/escreve',
            type : "POST", // type of action POST || GET
            dataType : 'json', // data type
            data : $("#idform").serialize() // post data || get data
        })

    });
});

这是我的服务器端escreve方法:

@POST
@Path("escreve")
@Consumes(MediaType.APPLICATION_JSON)
public void escreve(InputStream dado) throws IOException {
    StringBuilder construtor = new StringBuilder();
    try {
        BufferedReader in = new BufferedReader(new InputStreamReader(dado));
        String linha = null;
        while ((linha = in.readLine()) != null) {
            construtor.append(linha);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println(construtor.toString());
    Pessoa pessoa = gson.fromJson(construtor.toString(), Pessoa.class);
    Repo.escreve(pessoa);       
}

不幸的是我在F12的Chrome上收到了这条消息:

jquery.min.js:4 POST http://localhost:8080/DBRest/rest/escreve 415 (Unsupported Media Type)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
(anonymous function) @ index.html:20
dispatch @ jquery.min.js:3
q.handle @ jquery.min.js:3 

使用js alert($("#idform").serialize());我得到了这个:nome=Mary&idade=12显然不是JSON解析的。我现在使用escreve方法,因为我使用正确发送JSON对象的java类来测试它。

3 个答案:

答案 0 :(得分:1)

我解决了改变:

dataType : 'application/json'

答案 1 :(得分:0)

尝试使用serializeArray创建一个数组。自己测试一下:console.log($("#idform").serializeArray());serialize创建一个查询字符串,该字符串意味着是HTTP请求的一部分。两种表示在某种意义上是等效的,即使用适当的代码可以将一个代码转换为另一个而没有任何歧义。

两个版本都可用,因为如果您想通过将结果放在查询字符串中来发出HTTP请求,serialize很方便,如果您想自己处理结果,serializeArray会更方便。

答案 2 :(得分:0)

尝试发送它们

$.ajax({
            url: 'http://localhost:8080/DBRest/rest/escreve',
            type: 'POST',
            data: { input1: $("#input1").val(), input2: $("#input2").val() },
            success: function(result) {

            }
        });

如果你想在php中阅读

echo $_POST["input1"].$_POST["input2"];