0

我在 IE 上遇到了非常奇怪的错误。我使用下面的代码发出 ajax 请求以从数据库中获取数据并使用该数据创建下拉选项<option>。问题是在 IE 上数据没有正确显示,它只显示数据的第一个字符,但在其他浏览器上数据显示正确。我也试过打印数据,数据是正确的。所以我怀疑我的 Jquery 选择或追加是错误的,并尝试在 ajax 调用之外附加一些垃圾数据并且数据显示正确,但是我再次将该代码放入 ajax 并且它没有再次显示......我真的没有现在有线索..你能帮我解决这个问题吗?我已经用 FF、Chrome 和 safari 进行了测试,它们都运行良好......

$.ajax({

    cache: false,
    type: "POST",
    url: "<?php echo $this->baseUrl(); ?>/rewards/getdiscounttype/",
    data: { esid: estore_id }

}).done(function( data ) {

    var obj = jQuery.parseJSON(data);
    jQuery.each(obj, function (i, app) {

        //alert(i+app['discount_type']);
        var sel = $('select[name=discount_type'+id+']');
        sel.append('<option value="'+app['id']+'">'+app['discount_type']+'</option>');

    });

});
4

2 回答 2

2
$.ajax({

    cache: false,
    type: "POST",
    url: "<?php echo $this->baseUrl(); ?>/rewards/getdiscounttype/",
    data: { esid: estore_id },
    datatype: "json",
    succes: function(jsonData){
        $.each(jsonData,function(i,app){
            var sel = $('select[name=discount_type'+i+']');
            sel.append('<option value="'+app.id.+'">'+app.discount_type.+'</option>');
        });
    },
    error: function(e){

    }

})

试试这个,我认为将 JSON 视为 app.id 之类的对象而不是 app['id'] 会更好。没有太多时间做一些测试,你会给我你收到的 json 我可以测试。

于 2012-07-20T08:43:52.237 回答
0

现在使用 JavaScript!

$.ajax({

cache: false,
type: "POST",
url: "<?php echo $this->baseUrl(); ?>/rewards/getdiscounttype/",
data: { esid: estore_id } 

}).done(function( data ) {
    var obj = jQuery.parseJSON(data);

    /* clearing options with JS since jQuery cleare the select in the DOM but enter code   herenot on screen. */
    $('select[name=discount_type'+id+']')[0].options.length = 0;
    $('select[name=discount_type'+id+']').children().remove().end().append('');

    jQuery.each(obj, function (i, app) {
       var sel = $('select[name=discount_type'+id+']');
       sel.append('<option value="'+app.id+'">'+app.discount_type+'</option>');
    });
});
于 2012-07-23T06:25:34.587 回答