2013-07-23 34 views
0

我已經花了數小時和數小時(並且時間不多了)來試圖解決如何用先前選擇的城市填充選擇使用AJAX從一個PHP文件(AJAX請求)填充JSON的SELECT

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 name="city" id="city"> 
    <option value="ID FROM THE JSON">TITULO FROM THE JSON ARRAY</option> 
    ... AND FOR THE REST OF THE RESULTS 
</select> 

事先謝謝!我很困惑。

回答

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>'; 
    } 
} 
+0

夥計,你真棒...它的工作!這就是我所要說的。我已經編程了3年,每天學習和重新學習! – JuanBonnett

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

好運氣