javascript数组长度给出不正确的值

时间:2013-12-12 18:53:29

标签: javascript php google-maps google-maps-api-3

我正在尝试使用我的数据库中的邮政编码将标记放入谷歌地图中。 我将php arry提取成javascript数组,如下所示:

 var js_array = [<?php echo '"'.implode('","', $postal).'"' ?>];
   var postal = new Array();
   var postcodes = new Array();
   for (var i=0;i<js_array.length;i++){
       postal[i] = "\"" + js_array[i] + "\"";
   }
   var postcodes = "[" + postal + "]";
   alert(postcodes.length);

数据库中只有2个邮政编码。但它告诉我19.构建javascript数组有什么不对吗?

我正在使用它将标记放在谷歌地图上:

map.setCenter(new GLatLng(43.65, -79.38),5);

   for (i = 0; i < postcodes.length; i++) {
      geocoder.getLatLng(postcodes[i] + ', CANADA', function (point) {         
         if (point) {
            map.addOverlay(new GMarker(point));
         }
      });
   }

可以在地图上找到合适的标记吗?

感谢。

3 个答案:

答案 0 :(得分:2)

使用json_encode()构建数组:

var js_array = <?php echo json_encode($postal) ?>;

我真的不知道你在尝试做什么:

var postcodes = "[" + postal + "]";

您已将postal定义为数组。你为什么试图在它周围放上方括号?我想你可以删除那一行。

事实上,你的整个循环看起来没必要。为什么要在价值观附近加上双引号?杀掉所有这一切。只是做:

var postcodes = <?php echo json_encode($postal) ?>;
alert(postcodes.length);

答案 1 :(得分:0)

执行此操作时:

var postcodes = "[" + postal + "]";

你正在创建一个字符串。您看到的长度是该字符串的长度,而不是数组的长度。

答案 2 :(得分:0)

我认为你没有获得数组的长度,但实际上是一个字符串,在这里。

var postcodes = "[" + postal + "]";

重新打印“var”会重置您最初设置的变量。尝试删除它。

   var js_array = [<?php echo '"'.implode('","', $postal).'"' ?>];
   var postal = new Array();
   var postcodes = new Array();
   for (var i=0;i<js_array.length;i++){
       postal[i] = "\"" + js_array[i] + "\"";
   }
   postcodes = "[" + postal + "]";
   alert(postcodes.length);