заказ по имени в поле выбора не работает в Google Chrome и IE
У меня есть функция, которая возвращает список названий городов, связанных с city_id
, упорядоченных по названию города.
Я хочу показать их в поле выбора. В Firefox (23.0.1) он отлично работает даже с порядком. Но в случае IE (10) и chrome (29.0.1547.66 m) порядок неверен. Я использую PHP и zend framework. Мой код:
$cities = $countryCityModel->getCities($country);
print json_encode(array('status'=>'Success',
'data'=>$cities)
);
public function getCities($countryId){
if(!$countryId)
return false;
$mdb = $this->getOldDbAdapter();
$sql = $mdb->select()
->from('cities', array('city_id','city'))
->where('country_id = ?', $countryId)
->order("city");
return $mdb->fetchPairs($sql);
}
$.ajax({
url : baseUrl + '/lead/index/get-cities',
dataType : 'json',
data : {
country:country_id
},
beforeSend : function(){
$("#holder_popup").show();
},
complete: function(){
$("#holder_popup").hide();
},
success : function(res) {
var sbuOptions = "<option value=''>--SELECT--</option>"
if(res.status == 'Success'){
for(i in res.data){
sbuOptions += "<option value='"+i+"'>"+res.data[i]+"</option>";
}
$("#city").html(sbuOptions);
}else{
$("#city").html(sbuOptions);
alert(res.msg);
}
},
error : function(jqXHR, exception) {
}
});
Возвращаемое значение выглядит следующим образом:
{
"status":"Success",
"data":{
"53029":"DURRES",
"53331":"ELBASAN",
"40239":"FIER",
"16235":"KAMEZ",
"42191":"KAVAJE",
"41375":"KUKES",
"53581":"PESHKOPI",
"57686":"SHIJAK",
"56756":"SHKODER",
"4496":"TIRANA",
"41342":"VLORE",
"19454":"VORE"
}
}
Пожалуйста, помогите мне, как решить эту проблему?
3
Author: Petr Janeček, 2013-09-09
2 answers
Можете ли вы обновить свой код до этого
public function getCities($countryId)
{
$resultArrary = array();
if($countryId)
{
$mdb = $this->getOldDbAdapter();
$sql = $mdb->select()
->from('cities', array('city_id','city'))
->where('country_id = ?', $countryId)
->order("city");
$result = $mdb->fetchAll($sql);
foreach($result as $key => $city )
{
$resultArrary[$key]['id'] = $city['city_id'];
$resultArrary[$key]['city'] = $city['city'];
}
}
return $resultArrary;
}
for(i in res.data)
{
cityData = res.data[i];
sbuOptions += "<option value='"+cityData.id+"'>"+cityData.city+"</option>";
}
Похоже, что chrome автоматически сортирует объект json с индексом.
ССЫЛКА:
Chrome и IE автоматически сортируют объекты JSON, как это отключить?
https://code.google.com/p/chromium/issues/detail?id=37404
2
Author: Nandakumar V, 2017-05-23 12:05:11
В строке отсутствует ASC или DESC 12
->order("city ASC");
0
Author: Moeed Farooqui, 2013-09-09 06:08:55