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 回答
0

有两种简单的方法可以做到这一点。首先我使用谷歌浏览器(或火狐)来方便测试。查看文档,您会看到您的 $.ajax 调用也将接受成功函数。您可以将它放在 dataType 下的 ajax 调用中,如下所示:

  var string = $.ajax ({
                        url: "getCities.php",
                        dataType: 'json',
                        success: function(data) {
                          console.log(data);
                        }
                    });
      string.done();

请注意我如何更改 ajax 调用的结尾。现在是说,当这个调用完成时,调用成功函数。如果你想在出错的情况下打印一些东西,你也可以在 ajax 调用中放置一个错误函数。然后在数据返回时调用成功函数。它将在您的 Chrome 调试器的控制台中打印。谷歌这个词以找出如何显示它,超级简单的东西。您还可以在 console.log 函数调用上放置一个断点(谷歌也这样做),您将能够检查从您的 ajax 调用返回的对象。

此外,据我所知,console.log 在 IE 中不起作用。

玩得开心。

于 2013-06-15T11:23:54.000 回答