Доставить строки в JavaScript, используя JSON - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь поместить строки моей таблицы mysql в массивы, но до сих пор не нашел, как это сделать правильно.Я был бы признателен, если бы кто-нибудь дал мне подсказку.Возможно, это очень, очень неправильно, как я это делаю, но я до сих пор не нашел много информации о JSON и моей проблеме.

    function updateMap(){
        var latlngArray = new Array();
        var titleArray = new Array();
        var ogvArray = new Array();
        var mp4Array = new Array();
        var webmArray = new Array();

        $.getJSON('getPOI.php', function(data){
            for(var i=0; data.length; i++){
                latlngArray[i] = data[i][0]; 
                alert(latlngArray[i]);
                titleArray[i] = data[i][1];
                ogvArray[i] = data[i][2];
                mp4Array[i] = data[i][3];
                webmArray[i] = data[i][4];
            }
        });
    }

Файл php:

        $con = mysql_connect($server,$benutzername,$passwort) or 
        die ("Keine Verbindung moeglich");

        mysql_select_db($datenbank, $con) or
        die ("Die Datenbank existiert nicht");

        $res = mysql_query("select * from POI");
        echo json_encode($res);
        mysql_close($con);

ОБНОВЛЕНИЕ: Это все еще не работает должным образом.Функция оповещения отображает только «0: [объект объекта], 1: [объект объекта], ...». Я полагаю, что я неправильно обращался к данным:

jsontest.html:
<html>
    <head>
        <script src="jquery-1.6.1.js"></script>
        <script type="text/javascript">
            function updateMap(){           
                $.getJSON('getPOI.php', function(data) {
                        $.each(data, function(key, value){
                            alert(key + ': ' + value);
                        });
                    }
                );
            }   
        </script>
    </head>
    <body onload="updateMap()">
    </body>
</html>

getPOI.php:

<?php
    $server = "localhost";
    $benutzername = "user";
    $passwort = "pw";   

    $datenbank = "d0116c39";

    $con = mysql_connect($server,$benutzername,$passwort) or 
    die ("Keine Verbindung moeglich");

    mysql_select_db($datenbank, $con) or
    die ("Die Datenbank existiert nicht");

    $allResults = array();

    $res = mysql_query("select * from POI");

    while ($row = mysql_fetch_assoc($res)) {
        $allResults[] = $row;
    }

    echo json_encode($allResults);
?>

Наконец-то понял:

<html>
    <head>
        <script src="jquery-1.6.1.js"></script>
        <script type="text/javascript">
            function updateMap(){           
                $.getJSON('getPOI.php', function(data) {
                        $.each(data, function(i, item){
                            alert(data[i]['Adresse']);
                            alert(data[i]['Titel']);
                        });
                    }
                );
            }   
        </script>
    </head>
    <body onload="updateMap()">
    </body>
</html>

1 Ответ

1 голос
/ 21 июля 2011

Называя это:

$res = mysql_query("select * from POI");

выполнит запрос, но не получит данные: вы должны получить его .


Это можно сделать с помощью таких функций, как mysql_fetch_assoc() (которые должны вызываться один раз для каждой строки, выбранной запросом - обычно это делается в цикле)

Каждый раз, когда вы выбираете строку, добавляйте ее в массив.

И, когда вы закончите извлекать строки и создавать этот массив, json_encode() it и отправьте полученную строку клиенту.


Вы получите часть кода, которая может выглядеть примерно так:

$allResults = array();

// Execute the query
$res = mysql_query("select * from POI");

// As long as you get rows, fetch them
while ($row = mysql_fetch_assoc($result)) {
    // And add them to the resulting array
    $allResults[] = $row;
}

// Which, in the end, can be JSON-encoded
echo json_encode($allResults);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...