我正在触发一个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等中运行良好。
答案 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上使用
希望这有帮助