0

我已经花了好几个小时(而且时间已经不多了)试图弄清楚如何使用 AJAX 从先前选择的状态中填充选择的城市

PHP 文件如下所示:

include_once("../models/class-Zone.php");

$state= $_GET["st"];

$cities= Zone::getCities($state);

echo json_encode($cities);

当我使用 ajax 警告结果时:

$.post(
        '../ajax/getcities.php?st='+stateid,
        function(data) {
            alert(data);
        }
    );
//I GET THIS:

[{"id":"08078","titulo":"BARANOA"},
{"id":"08001","titulo":"BARRANQUILLA"},
{"id":"08137","titulo":"CAMPO DE LA CRUZ"},
{"id":"08141","titulo":"CANDELARIA"},
{"id":"08296","titulo":"GALAPA"},
{"id":"08132","titulo":"JUAN DE ACOSTA"},
{"id":"08421","titulo":"LURUACO"}]

我还没有找到一种方法来迭代并用这些数据填充 SELECT。选择应该是这样的

<select name="city" id="city">
    <option value="ID FROM THE JSON">TITULO FROM THE JSON ARRAY</option>
    ... AND FOR THE REST OF THE RESULTS
</select>

预先感谢您!我很困惑。

4

2 回答 2

1

首先解码 JSON,然后将 HTML 添加到每个城市的选择中。

function(data) {
    var cities = JSON.parse(data);
    for(var c in cities) {
        document.getElementById('city').innerHTML += '<option value="' + cities[c].id +'">' + cities[c].titulo + '</option>';
    }
}
于 2013-07-23T22:24:29.207 回答
0

看来您正在使用 jQuery,所以我认为您可以轻松地在成功回调中迭代 JSON

function(data){
    var st=""
    for(i in data){
        st+="<option id='"+data[i].id+"'>"+data[i].titulo+"</option>"
    }
    //here st contains all the options
    // you just have to append it in your select's html
    // I don't know your DOM structure, so if you didn't have anything 
    // you can add the select, then display it
    $("thePlaceWhereYouWantIt").html("<select>"+st+"</select>")
    }

它应该可以工作,但这取决于您的实际 HTML

祝你好运

于 2013-07-23T22:42:12.490 回答