2011-08-21 63 views
0

我已经测试了很多。代码在FIREFOX 5中正常工作,但在IE9中没有相同的代码。jquery下拉列表和网格与模板不工作在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'); 
    }); 
}); 

代码是用于制作GRID csxhtml MVC3文件。

<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> 

回答

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 
    } 
}); 
+0

感谢代码是工作的罚款。一件事,如何使用URL助手来替换硬编码的URL? – Pirzada

+0

@pirzada,像这样:'@ Url.Action(“GetHeaderGrid”,“HeaderMenu”)'。 –

1

您可以使用此:现在

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