0

私は ajax と json の初心者なので、この質問が少しばかげている場合は申し訳ありません。データ (都市 ID と名前) を取得し、それらを配列に入れてから、json_encode を使用します。次に、getCities 関数を呼び出しますが、正しい都市を取得しているかどうかわかりません。document.write を使用してみましたが、出力がありません。正しいものを取得しているかどうかを確認するにはどうすればよいですか? ご協力ありがとうございました。

getCities.php は次のとおりです。

$json = array();
$query = "SELECT cityID, cityName FROM city";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)){
    $coord = array('id' => $row['cityID'],'city' => $row['cityName']);
    array_push($json, $coord);
}

$jsonstring = json_encode($json); 

そして、ここにJavaScriptの部分があります:

function getCities(){
        var string = $.ajax ({
                        url: "getCities.php",
                        dataType: 'json'
                    }).responseText;
        return JSON.parse(string);          
    }

    $(document).ready(function (){ 
        var city = getCities();
        while (city.length > 0) {
            document.write(city.pop + "<br/>");
        }
    });
4

2 に答える 2

0
function getCities(callback){
        var string = $.ajax ({
                        url: "getCities.php",
                        dataType: 'json',
                        success:callback
                   });       
    }

    $(document).ready(function (){ 
        getCities(function(data){
             console.log(data);
             var city = JSON.parse(data);
             if (city.length > 0) {
                document.write(city.pop + "<br/>");
             }
        });
    });

Ajax は非同期です。使用できませんvar city = getCities();。それを呼び出すと、まだ ajax の応答が届いていないためです。コールバック関数を渡す必要があり、ajax 応答が到着したら、その関数を呼び出して応答を取得します。

于 2013-06-15T11:46:12.963 に答える