Ich bin mit Jersey auf der Server-Seite und meine Funktion verwendetBeitrag Ajax-Aufruf mit json 400 während Rest Client zurückgegeben funktioniert
@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 erstellen, die einen Ajax-Aufruf macht wie,
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 Anruf 400 Ungültige Anforderung zurückkehren und es wird nicht innerhalb der Funktion auf Server-Seite gehen. Wenn wir Personen-Objekt in Form einer Zeichenfolge übergeben, wie,
"{\"name\":\"abc\",\"\age":\"20\"}"
dann auch Ajax-Aufruf zurückkehren 200. Gibt es Gründe, warum es geschieht?
Sie haben JSON nicht an den Server gesendet. 'person' ist ein Objekt, und jquery wird das natürlich in eine param-Zeichenkette umwandeln, nicht in json, weil es das standardmäßig tut. –
ich passiere Javascript Objekt direkt – sunder
ja, und das ist das Problem, wie ich es erklärt habe. Ein JavaScript-Objekt ist ** nicht ** json. –