2010-09-09 115 views
0

我已经编码,取决于下拉选定的项目,加载一些进一步的控制(单独的内容索引== 0与索引> = 1)。初始选择的选定项目在服务器端预先设定。我已经和重新加载/缓存问题,用户改变但不提交表单,然后单击重新加载。最初,我从服务器加载默认启动,但浏览器重新加载导致不正确的表单状态,因为它(尤其是IE)记住了最后选择的 - 但未提交 - 控制对象,如果用户点击刷新。所以,我有这个代码。在其他浏览器中工作正常,但在IE中,不呈现内容。jQuery负载不反映IE浏览器

$(window).load(function(){ 
    $.ajaxSetup({cache: false}) 
    var theProduct = ''; 
    if ($('#chooseProduct').attr('selectedIndex') > 0) { 
     theProduct = '&product=' + $('#chooseProduct').val(); 
    } 
    setEvent($('#chooseProduct').attr('id'), 'product_req'); 
    $('#productSubselection').load(
     '/netpub/server.np?base&site=ddfa&catalog=catalog&template=regions.np' + theProduct//, 
    ); 
    $(document).ready(function(){ 
     $('#chooseProduct').change(function(Event){ 
      setEvent($('#chooseProduct').attr('id'), 'product_req'); 
      $('#productSubselection').load(
       '/netpub/server.np?base&site=ddfa&catalog=catalog&template=regions.np', $(this).serialize()//, 
      ); 
     }); 
     $('#browseall').click(function(Event){ 
      deleteCookie('product_req'); 
     }); 
    }); 
}); 

使用记录/警报,我可以确认IE正在呼叫正确的内容。如果我把AJAX调用的URL放在一个正常的IE窗口中,我会得到预期的内容 - 格式良好的HTML - 返回。 IE或任何其他浏览器都不会抛出任何JS错误。我已经尝试将代码的最初部分放入“准备好”事件中,但它没有区别。我做了什么明显错误?

+0

我认为这可能只是第一行。如果我将它改为:$(window).load(function(Event){它似乎工作,但所有其他代码在加载时运行,所以'Event'有什么不同? – mwra 2010-09-09 19:55:13

+0

或者Firefox和Chrome现在加载在页面加载/刷新时添加Ajax内容Safari和IE不会。 – mwra 2010-09-09 20:13:43

回答

0

对独白的aplogies,只是给这个答案系主题。事实证明,这个问题实际上是在theProduct参数字符串中与load URL一起传递的空格错误编码(mea culpa)。结果很微妙,不会在我期望的地方抛出错误,所以导致我认为这是一个jQuery /事件问题。经过排序,我能够将所有内容都放在$(document).ready(function()之内,jQuery按照最初的设想工作。道德?请记住在向GET查询添加字符串时要勤于文本编码。