2017-03-31 7 views
-3

Der folgende Code senden von Ajax mit einem json:Object.toString() -> [object Object]

var geojson = new Object(); 
geojson["type"] = "FeatureCollection"; 
geojson["zone_type"] = "Zone"; 
$.ajax({ 
    url : url, 
    type : 'POST', 
    data : geojson, 
    dataType : 'json', 
}); 

Allerdings, wenn ich in der Konsole "GeoJSON" stellen und, wenn ich die Anfrage schauen in die Netzwerk:

geojson = "[object Object]" 

Eigentlich sollte ich das Objekt haben:

geojson = {type:FeatureCollection,zone_type:Zone} 

soll ich nicht?

+0

versuchen 'Daten: JSON.stringify (GeoJSON)' und 'console.log (" geojson = ", geojson);' – SLYcee

+0

Nun, ja. Im Netzwerk werden diese als Parameter in der POST-Anfrage übergeben. Dann sollten Sie in der Konsole das Objekt sehen. Denken Sie daran, dass Sie console.log () immer in Ihrem Code ausführen können und dies an die Konsole ausgegeben wird. – MarkSkayff

+0

Ich kann das Problem nicht reproduzieren (zumindest nicht ohne 'processData: false' zu ​​setzen, was nicht deine [mcve] ist. Wenn ich eine' url' Variable hinzufüge (die auch in deinem MCVE fehlt) und diesen Code ausführe Ich erhalte einen URL Encoded Form Data body in der POST-Anfrage. Ich sehe '[object Object]' nicht. Ich sehe auch JSON nicht. Versuchen Sie tatsächlich, JSON zu senden? (In Ihrer "Antwort" sagten Sie * Ist es jedoch möglich, "im Ergebnis * zu entfernen, aber das wäre für einen JSON-Text ungültig." Verwechseln Sie JSON mit JavaScript-Objekten? – Quentin

Antwort

0
var geojson = new Object(); 
geojson["type"] = "FeatureCollection"; 
geojson["zone_type"] = "Zone"; 
$.ajax({ 
    url : url, 
    type : 'POST', 
    data : JSON.stringify(geojson), 
    dataType : 'json', 
}); 

Wenn ich JSON.stringify (GeoJSON) tatsächlich hinzufügen, bekomme ich richtig:

geojson = {"type":"FeatureCollection","zone_type":"warning_zone"} 

Vielen Dank @SLYcee

Verwandte Themen