Jquery下拉列表和网格模板不在IE9中工作

时间:2011-08-21 15:23:11

标签: asp.net-mvc-3 jquery jquery-templates

我已经测试了很多。代码在FIREFOX 5中正常工作,但相同的代码在IE9中不起作用。

下面是完全没有在IE9中使用DROPDOWN和GRID的代码。当我清除IE缓存和刷新页面比网格 充满了新的价值观。我看到AJAX调用很好。

问题IE9:

下拉补充码不能在IE9中使用。用于重新填充下拉列表的JQuery函数在JS文件中。

var ReloadMenu = (function () {
    $.getJSON("/HeaderMenu/GetHeaderMenu", function (data) {
        $('#headermenuDd >option').remove();
        $("#headermenuDd").prepend("<option value='' selected='selected'></option>");

        var text = $.trim($("#dropdowntext").val());
        var options = $("#headermenuDd");
        $.each(data, function () {
            if (text == this.Id)
                options.append($("<option class=\"green\"></option>").val(this.Id).text(this.DisplayName));
            else
                options.append($("<option></option>").val(this.Id).text(this.DisplayName));
        });
    });
});

网格补充代码在IE9中不起作用。用于重新填充网格的JQuery函数在JS文件中。

var ReloadGrid = (function () {
    $.getJSON("/HeaderMenu/GetHeaderGrid", function (data) {
        $('table.gridTable > tbody').empty();
        (data.length <= 0) ? $("#gridBtn").hide() : $("#gridBtn").show();
        for (var i = 0; i < data.length; i++) { data[i].num = i + 1; }
        $('#gridTemplate').tmpl(data).appendTo('table.gridTable > tbody');
    });
});

代码在csxhtml mvc3文件中用于制作GRID。

<script id="gridTemplate" type="text/x-jquery-tmpl">
    <tr class="gridRow">
        <td class="cellTd ">
            <input type="checkbox" id="deleteCb" />
            <input type="hidden" id="Id_ + ${num}" class="idField" value="${Id}" />
        </td>
        <td class="cellTd">
            <input id="index" name="index" class="numberField" type="text" value="${IndexOrder}" />
        </td>
        <td class="cellTd">${DisplayName}</td>
        <td class="cellTd ">${UrlName}</td>
        <td class="cellTd ">
            <input type="checkbox" id="activeCb" {{if Active}} checked{{/if}} />
        </td>
    </tr>

</script>
<table class="gridTable" cellspacing="0" cellpadding="0">
    <thead>
        <tr class="gridTitleRow">
            <td class="iconLink width36">Delete</td>
            <td class="iconLink width60">Sort Order</td>
            <td class="iconLink widthAuto">Display Name</td>
            <td class="iconLink widthAuto">Url Name</td>
            <td class="iconLink widthAuto">Active</td>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

2 个答案:

答案 0 :(得分:3)

某些浏览器可以缓存GET请求。尝试禁用缓存而不是$.getJSON使用$.ajax并设置cache: false参数:

$.ajax({
    url: '/HeaderMenu/GetHeaderGrid', // TODO: never hardcode urls like this use Url helpers
    type: 'GET',
    cache: false,
    success: function(data) {
        // same as before
    }
});

答案 1 :(得分:1)

你可以用这个:

$.ajax({
    url: '/HeaderMenu/GetHeaderGrid', // TODO: never hardcode urls like this use Url helpers
    type: 'GET',
    cache: false,
    success: function(data) {
        // same as before
    }
});