Ich habe Probleme mit einem Loopback-Problem mit Ajax. Ich versuche, ein Array von Objekten durch jQuery-Funktion .ajax()
POST, aber ich kann einfach nicht. Der Server schickt mir immer einen 422 Fehler (Unprocessable Entity).Loopback: POST ein Array von Objekten durch Ajax
Das Kuriose ist: Ich bin in der Lage, genau die gleiche Anfrage mit dem GUI-Explorer oder der Befehlszeile zu tun.
Ich habe zwei Modelle: Nemo & PendingUpdates verbunden sind durch eine hadMany/belongsTo Verhältnis (ich habe abgeschnitten sie besser lesbar sein):
// nemo.json
{
"name": "Nemo",
"base": "PersistedModel",
"properties": {
"id": {
"type": "Number",
"id": true,
"required": false,
"generated": true
}
},
"relations": {
"pendingUpdates": {
"type": "hasMany",
"model": "PendingUpdate",
"foreignKey": "nId"
}
}
}
und
// pending-update.json
{
"name": "PendingUpdate",
"base": "PersistedModel",
"properties": {
"id": {
"type": "Number",
"id": true,
"required": false,
"generated": true
},
"nId": {
"type": "Number",
"required": true
},
"parameter": {
"type": "String",
"required": false
},
"requestType": {
"type": "Number",
"required": true
}
},
"relations": {
"nemo": {
"type": "belongsTo",
"model": "Nemo",
"foreignKey": "nId"
}
}
}
Hier ist das Ding: Ich versuche, ein Array von pendingUpdates zu senden. Mit dem Strongloop Explorer, ich nur POST
dies: auf /Nemos/{id}/pendingUpdates
mit ID: 2 und Daten: [{"requestType": 3, "parameter": "stuff"}, {"requestType": 2, "parameter": "otherStuff"}]
. Ich habe einen 200 Antwortcode mit den erstellten Objekten im Körper.
aber wenn ich versuche, die genau die gleiche Anfrage Client-Seite mit jQuery zu schicken, ich 422.
bekam Hier ist der Code-Schnipsel:
var data = [
{"requestType": 3, "parameter": "stuff"},
{"requestType": 2, "parameter": "otherStuff"}
];
$.ajax("/api/Nemos/2/pendingUpdates?access_token=xxxxxxxxx", {
data: data,
headers: {
Accept: "application/json",
contentType: "application/json"
},
method: "POST"
}).done(success)
.fail(fail);
Ich habe versucht, direkt data
verwenden, mit {data}
, , ...
Könnte mir jemand helfen?
Vielen Dank,
Bjorge
Es scheint, dass jQuery hat ein seltsames Verhalten mit Arrays in seiner '.ajax()' -Funktion: > * Daten: * Es wird in eine Abfrage Zeichenfolge umgewandelt, wenn nicht bereits eine Zeichenfolge. Es wird an die URL für GET-Anfragen angehängt. Siehe "processData" -Option, um diese automatische Verarbeitung zu verhindern. Objekt muss Schlüssel/Wert-Paare sein. ** Wenn value ein Array ist, serialisiert jQuery mehrere Werte mit demselben Schlüssel ** basierend auf dem Wert der Einstellung "traditio- nal" (siehe unten).< Jemand weiß, wie man das verhindert? Ich habe versucht, das 'traditionelle' Attribut sowohl mit' true' als auch 'false' Attributen zu verwenden und nichts hat sich geändert. – bjorge