Gemäß den jQuery Ajax-Dokumenten werden beim Senden von Anforderungen Daten in Form einer Abfragezeichenfolge serialisiert. Die Einstellung processData:false
sollte es mir jedoch ermöglichen, tatsächlich JSON im Hauptteil zu senden. Leider fällt es mir schwer, erstens festzustellen, ob dies geschieht, und zweitens, wie das Objekt aussieht, das an den Server gesendet wird. Ich weiß nur, dass der Server nicht analysiert, was ich sende.
Wenn Sie mit dem http-Client ein Objektliteral veröffentlichen {someKey:'someData'}
, funktioniert dies. Bei Verwendung von jQuery mit data: {someKey:'someData'}
schlägt dies jedoch fehl. Wenn ich die Anfrage in Safari analysiere, heißt es leider, dass die Nachrichtennutzlast [object Object]
... großartig ... ist und in Firefox der Beitrag leer ist ...
Wenn der Body-Inhalt auf der Java-Seite protokolliert wird, wird er buchstäblich angezeigt. [object Object]
Wie sendet man also REAL JSON-Daten?
Hat jemand Erfahrung mit einem Java-Dienst, der JSON-Daten im Anforderungshauptteil mit der von jQuery gesendeten Anforderung serialisiert?
Übrigens ist hier die vollständige $ .ajax-Anfrage:
$.ajax({
contentType: 'application/json',
data: {
"command": "on"
},
dataType: 'json',
success: function(data){
app.log("device control succeeded");
},
error: function(){
app.log("Device control failed");
},
processData: false,
type: 'POST',
url: '/devices/{device_id}/control'
});
quelle
JSON.stringify()
?data
in einen String, anstatt ihn nur als JSON zu senden?contentType: "application/json; charset=utf-8",
wie in diesem Thread erwähnt anzugeben