我有这个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类来测试它。
答案 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"];