2017-03-31 67 views
-3

通过使用Ajax一个JSON发送下面的代码:Object.toString() - > [对象的对象]

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

然而,当我在控制台“以GeoJSON”问,并且当我看在所述请求网络:

geojson = "[object Object]" 

其实,我应该有对象:

geojson = {type:FeatureCollection,zone_type:Zone} 

不能?

+0

尝试'数据:JSON.stringify(以GeoJSON)'和'console.log(“geojson =”,geojson);' – SLYcee

+0

嗯,是的。在网络中,这些将作为POST请求中的参数传递。然后在控制台中,您应该看到该对象。请记住,您始终可以在代码中执行console.log(),并将其输出到控制台。 – MarkSkayff

+0

我不能重现这个问题(至少,不是没有设置'processData:false'这不是你的[mcve]做的事情)当我添加一个url变量(也从你的MCVE中丢失)并运行该代码,我在POST请求中得到了一个URL Encoded Form Data Body。我没有看到'[object Object]',我也没有看到JSON。你真的试图发送JSON吗?(在你的“答案”中你说过*但是,是否可以删除结果中的“但对JSON文本无效)您是否将JavaScript与JSON混淆? – Quentin

回答

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

如果我添加JSON.stringify(以GeoJSON)的确,我得到正确:

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

非常感谢您@SLYcee