Ich benutze Jersey auf der Serverseite und meine Funktion verwendet
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response someFunction(SomeClass obj,@Context HttpServletRequest req){}
Aber wenn ich einen HTTP-Post-Aufruf mit Content-Type = "Application / Json" und Payload als {"name":"abc","age":"20"}
von Advanced Rest Client, dann wird der Anruf ein erfolgreicher Anruf sein. Aber wenn ich einen Client erstelle, der einen Ajax-Aufruf macht,
var person = {
name: "abc",
age:"20",
}
$.ajax({
url: "someUrl",
type: "post",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
},
data: person
});
Dann wird dieser Aufruf 400 schlechte Anfrage zurückgeben und es wird nicht in die Funktion auf der Serverseite gehen. Wenn wir Person Objekt in Form einer Zeichenfolge wie übergeben,
"{"name":"abc","age":"20"}"
Dann gibt der Ajax-Aufruf auch 200 zurück. Irgendein Grund warum es passiert?
Antworten:
0 für die Antwort № 1Sie sollten Daten stringieren.
$.ajax({
url: "someUrl",
type: "post",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
},
data: JSON.stringify(person)
});