无法访问数组内容

时间:2016-06-02 14:04:35

标签: javascript arrays ajax

我的ajax调用给了一个包含一些对象的Json对象,特别是一个对象'几何'带有类型和数组。 使用console.log,它会显示:

  

对象{类型:"点",坐标:数组[2]}

     

数组[-28.0833333333,-55.9166666667]

但是当我尝试显示或使用此数组的内容时,我得到一个未定义的语句。

这是我的ajax电话:

$.ajax({ //La requête ajax pour récupérer les données sous forme d'un tableau de Json
                        url: 'includes/query_ajax.php', //adresse du script php qui interroge la BDD
                        data: { terms : terms, database : database, condition : condition,host : host, dbname : dbname, user : user , password : password }, //la requete qu'on lui fait passer en paramètres
                        method: 'post',
                        success: function (data) { //La fonction callback qui sera exécutée une fois que la requête ajax sera terminée
                            //Cette fonction contient la création de la carte et l'affichage des icones tirés de la BDD
                            var iconFeatures=[];
                                var line;
                                var result=$.parseJSON(data); 
                                for (var i=0; i<result.length; i++)//Cette boucle permet de récupérer chaque métadonnée issue de la BDD
                                {   
                                    var line=result[i]//Donne la ieme ligne de métadonnées //$.parseJSON(result[i])//Donne la ieme ligne de métadonnées
                                    coord= line[0]; //On récupère les coordonnées, la hauteur, le nom et le type de volcan etc
                                    ele= line[1];
                                    name=line[2];
                                    status=line[3]
                                    var iconFeature = new ol.Feature({//Création d'un marqueur à partir des données précédentes
                                      geometry: new ol.geom.Point([27, 27]).transform("EPSG:4326", "EPSG:3857"),
                                      name: name ,
                                      elevation: ele,
                                      type: status,
                                      population: 4000,
                                      rainfall: 500
                                    });
                                    iconFeatures.push(iconFeature);//On ajoute ce marqueur à notre tableau de marqueur
                                }

我用来查询数据库的php函数以防万一:

$bdd = pg_connect("host=".$_POST['host']." dbname=". $_POST['dbname'] ." user=".$_POST['user']." password=".$_POST['password']);//Connexion à la BDD
    if (!$bdd)
    {
        die('Error: Could not connect: ' . pg_last_error());
    }


        $query = "SELECT " . $_POST['terms'] . "FROM " . $_POST['database'];

        $result = pg_query($query) or die('Connexion impossible : '.pg_last_error());//O interroge la BDD
        if (!$result) //Dans le cas ou la requête n'a rien donné, probleme de connexion
        {
            echo "Une erreur s'est produite \n";
            echo pg_last_error();
            exit();
        }
        $res=array();//Initialisation du tableau de résultat

        $fields = explode(',', $_POST['terms']);
        $count= count($fields);
        $j=0;
        while($row = pg_fetch_assoc($result)) {//Boucle de récupération des données, tant qu'il reste des lignes de données
            // $res[$j]=array();
            $temp=array();
            for ($i=0; $i<$count ;$i++)
            {

                if (trim($fields[$i])==trim('ST_AsGeoJSON(position) as geometry'))
                {   
                    $fields[$i]='geometry';
                     $$fields[$i] =json_decode($row['geometry']) -> {'coordinates'};
                }
                else
                {
                    if (is_object(json_decode($row[trim($fields[$i])])))
                    {   
                         $$fields[$i] =json_decode ($row[trim($fields[$i])]);
                    }
                    else
                    {
                        $$fields[$i] =($row[trim($fields[$i])]);
                    }
                }
                $temp[]=$$fields[$i];

            }
            $res[]=$temp;



        }


        echo json_encode($res);//On retourne le résultat sous forme d'un Json


    pg_free_result($result);//On libère le tableau resultat

    pg_close($bdd);//On ferme la connexion

然而它给我一个正确的Jsonobject,所以我不认为这是我的问题的原因。 我找到了解决问题的方法,但这是一个过于复杂的方法,我真的想知道问题出在哪里。

我希望我已经清楚了。我是Javascript的初学者,你可以看到,所以每一个改进我的代码的建议我们都会受到欢迎。

谢谢!

编辑:

以下是使用console.log(结果)的输出:

Array [ "[[6.85,50.1666666667],"West Eifel V…", "[{"type":"Point","coordinates":[2.9…", "[{"type":"Point","coordinates":[2.5…", "[{"type":"Point","coordinates":[-4.…", "[{"type":"Point","coordinates":[10.…", "[{"type":"Point","coordinates":[11.…", "[{"type":"Point","coordinates":[12.…", "[{"type":"Point","coordinates":[14.…", "[{"type":"Point","coordinates":[14.…", "[{"type":"Point","coordinates":[14.…", 1535 de plus… ]

我还展示了字符串化的coord变量,以确保数组不为空:

  

{&#34;类型&#34;:&#34;点&#34;&#34;坐标&#34;:[ - 26.6666666667,-57.0833333333]}

但似乎并非如此......

编辑2:

如果我尝试

  

的console.log(数据)

之前

  

var result

它显示:

  

[[[6.85,50.1666666667],&#34; West Eifel Volc   字段&#34;&#34; 600&#34;&#34;放射性碳&#34],[{&#34;类型&#34;:&#34;点&#34;&#34;坐标&# 34;:[2.9666666667,45.775]},&#34;锚链   DES   Puys山脉&#34;&#34; 1464&#34;&#34;历史及#34],[{&#34;类型&#34;:&#34;点&#34;&#34;坐标&# 34;:[2.5333333333,42.1666666667]},&#34;奥洛特   Volc   字段&#34;&#34; 893&#34;&#34;全新世&#34],[{&#34;类型&#34;:&#34;点&#34;&#34;坐标&# 34;:[ - 4.0166666667,38.8666666667]},&#34;卡拉特拉瓦   Volc   字段&#34;&#34; 1117&#34;&#34;放射性碳&#34],[{&#34;类型&#34;:&#34;点&#34;&#34;坐标&# 34;:[10.8666666667,43.25]},&#34;拉尔代雷洛&#34;&#34; 500&#34;&#34;历史及#34],[{&#34;类型&#34;:& #34;点&#34;&#34;坐标&#34;:[11.9333333333,42.6]},&#34; Vulsini&#34;&#34; 800&#34;&#34;历史及#34; ],[{&#34;类型&#34;:&#34;点&#34;&#34;坐标&#34;:[12.7,41.7333333333]},&#34;阿尔   山&#34;&#34; 949&#34;&#34;全新世&#34],[{&#34;类型&#34;:&#34;点&#34;&#34;坐标&#34;:[14.1388888889,40.8272222222]},&#34;坎比   Flegrei&#34;&#34; 458&#34;&#34;历史及#34],[{&#34;类型&#34;:&#34;点&#34;&#34;坐标&# 34;:[14.4261111111,40.8213888889]},&#34;维苏威&#34;&#34; 1281&#34;&#34;历史及#34],[{&#34;类型&#34;:& #34;点&#34;&#34;坐标&#34;:[14.8333333333,39.4833333333]},&#34;帕利努罗&#34;&#34; -70&#34;&#34;放射性碳&#34 ],[{&#34;类型&#34;:&#34;点&#34;&#34;坐标&#34;:[13.8975,40.7333333333]},&#34;伊斯&#34;&# 34; 789&#34;&#34;历史及#34],[{&#34;类型&#34; [...]

黄色。

0 个答案:

没有答案