2016-12-10 1 views
0

Im Verwendung von node.js mit Express und Mongodb. Ich habe ein JSON-Objekt wie dieses, und ich will es über Ajax zu einem mongodb speichern:falsche JSON-Format nach dem Passieren von Ajax zu Mongodb

var somedata = { 
    "Jahr" : 2016, 
    "Thema": "Chemie", 
    "User": "MaxMuster", 
    "Fragen": [ 
    {"test":"test", "another": "another"}, 
    {"test2":"test2", "another": "another"}, 
    {"test3":"test3", "another": "another"}] 
}; 

jetzt meine Ajax-Funktion wie folgt aussieht:

$.ajax({ 
    url: '/SaveAltfragen/', 
    type:'post', 
    dataType:'json', 
    data: somedata, 
    success: function(data) { 
    console.log("data ok"); 
    }, 
    error: function(data) { console.log("error ajax");}, 
}); 

sobald ich die Daten übergeben mit ajax sieht meine Daten wie folgt aus:

{ 
    "_id" : ObjectId("584c954176f8a4219c0caeb4"), 
    "Jahr" : "2016", 
    "Thema" : "Chemie", 
    "User" : "MaxMuster", 
    "Fragen[0][test]" : "test", 
    "Fragen[0][another]" : "another", 
    "Fragen[1][test2]" : "test2", 
    "Fragen[1][another]" : "another", 
    "Fragen[2][test3]" : "test3", 
    "Fragen[2][another]" : "another" 
} 

ich habe versucht, vor dem „Eintragen“, um stringify und auf dem node.js Server JSON.parse aber das wird nicht funktionieren.

Im out von Ideen, ich habe eine andere kleine App, wo es funktioniert, aber ich sehe keinen Unterschied.

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Danke für Ihre Zeit!

+0

Warum funktioniert es nicht? Was ist der Fehler? – deChristo

+0

Wenn Sie mein Json-Objekt betrachten, das ich erstellt habe, können Sie sehen, dass es ein Array mit mehr Objekten gibt. Dies wird komplett verloren, nachdem ich die Daten mit Ajax an den Server gesendet habe. Nachdem ich es mit Ajax an den Server übergeben habe, sieht es aus wie in der dritten Code-Box. So wird es auch im Mongodb gespeichert. (Aber ich denke, der Speicherbereich ist hier nicht das Problem) – KevD

Antwort

0

Ok sieht es aus wie das Problem bei der Ajax "setup" war:

dataType:'json', 

Lösung ist, es zu ändern zu:

Edit: und verwenden Sie JSON.Stringify auf dem Objekt, bevor Sie es über Ajax senden.

0

Versuchen datatype mit: 'JSONP' oder versuchen, die var Wechsel zu

var somedata = { 
    "Jahr" : 2016, 
    "Thema": "Chemie", 
    "User": "MaxMuster", 
    "Fragen": [ 
    {["test":"test", "another": "another"]}, 
    {["test2":"test2", "another": "another"]}, 
    {["test3":"test3", "another": "another"]}] 
}; 
+0

Ich habe versucht, die var zu ändern, aber ich bekomme einen Fehler dann "SyntaxError: fehlende] in berechnete Eigenschaft Name" Ich kopierte Ihr Beispiel. – KevD

+0

Ther ist ein Extra "]" am Ende entfernen Sie das und versuchen Sie, stellen Sie sicher, dass alle {und [sind ausgeglichen. – Sagar

+0

Ich habe es bearbeitet – Sagar

Verwandte Themen