我希望我的多边形点通过ajax进入数据库。所以我像这样使用
function StorePolygon(id, poly_points) {
var html;
// The values of id=1001 and poly_points=((47.53208121578362, 7.705052197034092),
// (47.53188401121172, 7.704971730763646),(47.53189169452062, 7.705076336915226))
$.ajax({
url: url_prefix + "SetPolygonInfo",
data: ({
'id': id,
'polypoints': JSON.stringify(poly_points),
'as_json': 1
}),
async: false,
dataType: "json",
success: function(result) {
html = result.html;
},
error: function(data, status, e) {
alert(e);
}
});
return html;
}
JSON.stringify(poly_points)就像这样生成
[{"k":47.53208121578362,"A":7.705052197034092},
{"k":47.53188401121172,"A":7.704971730763646},
{"k":47.53189169452062,"A":7.705076336915226}]
我想使用自己的变量而不是K和A.Can有人帮忙吗?
答案 0 :(得分:3)
您可以使用map创建一个新的对象数组,其中包含您要使用的键和JSON.stringify该数组:
JSON.stringify( poly_points.map(function (point){
return {
custom_key_for_k : point.k,
custum_key_for_A : point.A
};
}) )
您需要shim map才能支持版本9之前的Internet Explorer,或者使用包含它的任何Javascript库中的等效函数。
答案 1 :(得分:0)
我只是不想依赖JSON.stringify(poly_points)变量来存储在数据库中。所以我喜欢这个
function StorePolygon(id, poly_points) {
var html;
var olist = []
var obj = {}
/*
JSON.stringify(poly_points.map(function(point) {
obj = {
'x': point.k,
'y': point.B
}
olist.push(obj)
}))*/
for(var i=0;i<poly_points.length;i++){
var xy = poly_points[i];
obj = {
'x': xy.lat(),
'y': xy.lng()
}
olist.push(obj)
}
$.ajax({
url: url_prefix + "SetPolygonInfo",
data: ({
'id': id,
'poly_points': JSON.stringify(olist),
'as_json': 1
}),
async: false,
dataType: "json",
success: function(result) {
html = result.html;
},
error: function(data, status, e) {
alert(e);
}
});
return html;
}
很好用。 JSON.stringify(poly_points)有时会给出k和A
[{"k":47.53208121578362,"A":7.705052197034092},
{"k":47.53188401121172,"A":7.704971730763646},
{"k":47.53189169452062,"A":7.705076336915226}]
但有时会给出
[{"k":47.53208121578362,"B":7.705052197034092},
{"k":47.53188401121172,"B":7.704971730763646},
{"k":47.53189169452062,"B":7.705076336915226}]
所以我不希望我的对象/返回列表取决于变量。