jQuery AJAX无法按省份更新城市

时间:2010-07-29 15:59:03

标签: jquery ajax select

正如标题所暗示的那样,当选择省时,我一直在使用jQuery AJAX尝试从数据库中提取城市列表。

我使用以下代码:

$('#province').change(function()
{
    var province = $(this).val();

    /*$.get("<?php echo site_url('cottage/cities'); ?>?province="+province, function(data) 
    {
        console.log(data);
        for (i=0;i<=data.length;i++)
        {
            //$('#citydiv').append(data['city']+'<br/>');
            //$('#city').append('<option value="'+data[i]['city']+'">'+data[i]['city']+'</option>');
        }
    }); */
    $.ajax({
    url: "<?php echo site_url('cottage/cities'); ?>?province="+province,
    method: 'GET',
    dataType: 'json',
    success: onDataReceived
    }); 
    function onDataReceived(series) 
{
    console.log(series);

}   
});

我还有一个与他们相关的省和城市。 问题是我不断返回“未定义”,因为它不喜欢我的数据发送方式。

数据如下:

[{"city_id":"1107","city":"Young's Point","province":"Ontario","lat":"44.490345","lon":"-78.236008"},{"city_id":"1108","city":"Zurich","province":"Ontario","lat":"43.421185","lon":"-81.624832"}]

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

json编码的字符串看起来像这样

{"a":1,"b":2,"c":3,"d":4,"e":5}

而你有方括号 尝试使用json_encode($ array);

在php中编码数据

答案 1 :(得分:1)

您的数据应该是

[
    {"city_id":1, "city":"Aberfoyle", "province":"Ontario", "lat":43.472996, "lon":-80.152603},
    {"city_id":2, "city":"Actinolite", "province":"Ontario", "lat":44.543221, "lon":-77.325813}
]

不要在数字周围加上引号,使用括号等。json_encode很有用(正如Christian Smorra所述)。

答案 2 :(得分:0)

尝试使用www.php.net/json_encode正确编码json响应

在onDataReceived()函数中执行检查以确保它是有效数据。

即使像这样简单的事情也会阻止任何JS错误发生。

function onDataReceived(series) {
    if(series.length  > 0) {
         // do your stuff
    }
}