Динамический выпадающий список в mootools не заполняется в IE7.Работает нормально в IE8 - PullRequest
0 голосов
/ 31 января 2012

Я запускаю 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 Ответ

0 голосов
/ 31 января 2012

Нет причин, по которым он не должен работать в 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

Надеюсь, это поможет

...