Динамический выпадающий список в mootools не заполняется в IE7. Работает нормально в IE8
Я запускаю AJAX-вызов, чтобы получить ответ JSON, который я заполняю в раскрывающемся списке.
Код является:
var ajaxURL = "abc.ajax";
var fireAjax = new Request.JSON({
url: ajaxURL,
method:'GET',
onSuccess:function(resultjson){
if(resultjson.length!=0){
var elSelect = new Element('option',{'html':'First component','value':'All'}).injectInside($('vehicletype'));
resultjson.each(function(vName){
var elOptions = new Element('option',{'value':vName,'selected':'selected' }).setHTML(vName).injectInside($('vehicletype'));
});
sschecker[0].registerAnotherElement($('vehicletype'));
}
}
}).send();
Это нормально работает в IE8, Firefox и т. Д.
1 ответ
Нет причин, по которым он не должен работать на IE7 (даже на IE6).
Я проверил (и несколько изменил) ваш код:
var ajaxURL = "/echo/json/";
var fireAjax = new Request.JSON({
url: ajaxURL,
method:'POST',
data: {
json: JSON.encode({
opt1: 'option 1',
opt2: 'option 2'
})
},
onSuccess:function(resultjson){
if(resultjson.length!=0){
var elSelect = new Element('option',{'html':'First component', 'value':'All' }).injectInside($('vehicletype'));
Object.each(resultjson,function(value,key){
new Element('option',{'value':key,'html':value}).inject($('vehicletype'));
//sschecker[0].registerAnotherElement($('vehicletype'));
});
}
}
}).send();
Я изменил метод на POST и добавил данные.. просто чтобы иметь возможность проверить его в jsfiddle http://jsfiddle.net/F7G9Y/2/.. он работает на IE7 (нет IE6 sry)
по моему мнению (и моему опыту), это обычно происходит из-за неправильной формы JSON, в большинстве случаев из-за дополнительной комы. Итак, json-строки такие:
{
'foo':'Foo',
'bar':'Bar', //<-extra coma here
}
все будет хорошо в Firefox, Chrome, но не в IE
Надеюсь это поможет