IE7中没有填充mootools中的动态下拉列表.IE8工作良好

Dynamic dropdown in mootools is not getting populated in IE7. Working fine in IE8

本文关键字:IE8 下拉列表 工作 动态 填充 mootools IE7      更新时间:2023-09-26

我正在启动一个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等中运行良好。

它没有理由不适用于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 上不行

希望这能帮助