Chcę, żeby mój wielokąt wskazuje na bazę danych przez AJAX. Więc używałem tak

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 (poli_points) produkuje takie

[{"k":47.53208121578362,"A":7.705052197034092},
 {"k":47.53188401121172,"A":7.704971730763646}, 
 {"k":47.53189169452062,"A":7.705076336915226}]

Chcę używać własnej zmiennej zamiast k i a.can ktoś pomoże?

3
stackOver Flow 15 sierpień 2014, 09:22

2 odpowiedzi

Najlepsza odpowiedź

Po prostu nie chcę zależeć od zmiennych JSON.Stringify (Poly_points) do przechowywania w DB. Więc to zrobiłem

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;

 }

Działało dobrze. Json.stringify (poly_points) czasami daje k i a

 [{"k":47.53208121578362,"A":7.705052197034092},
  {"k":47.53188401121172,"A":7.704971730763646}, 
  {"k":47.53189169452062,"A":7.705076336915226}]

Ale kilka razy daje

 [{"k":47.53208121578362,"B":7.705052197034092},
  {"k":47.53188401121172,"B":7.704971730763646}, 
  {"k":47.53189169452062,"B":7.705076336915226}]

Więc nie chcę, aby mój listy obiektów / powrotów zależy od zmiennych.

0
stackOver Flow 15 sierpień 2014, 10:43

Możesz użyć Map, aby utworzyć nową tablicę obiektów, które mają na celu użyć kluczy, a zamiast tego macierzy:

JSON.stringify( poly_points.map(function (point){
  return {
    custom_key_for_k : point.k,
    custum_key_for_A : point.A
  };
}) )

Musisz Mapa Shim Aby wspierać program Internet Explorer przed wersją 9 lub użyj odpowiedniej funkcji z dowolnej biblioteki JavaScript, która zawiera go.

3
Community 23 maj 2017, 11:49