IE7中没有填充mootools的动态下拉列表。在IE8中正常工作

时间:2012-01-31 12:04:43

标签: javascript mootools ie7.js

我正在触发一个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 :(得分:0)

没有理由不在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上使用

希望这有帮助