我编码,根据下拉列表中的选定项目,加载一些进一步的控件(index == 0 vs index> = 1的单独内容)。初始选择的所选项目在服务器端预先设置。我已经和重新加载/缓存问题,用户改变但不提交表单,然后单击重新加载。最初,我从服务器加载默认启动但浏览器重新加载导致不正确的表单状态,因为它(例如IE)记住最后选择 - 但未提交 - 控制值如果用户点击刷新。所以,我有这个代码。在其他浏览器中工作正常,但在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错误。我已经尝试将代码的初始部分放在'ready'事件中,但它没有任何区别。我做了一件明显不对的事吗?
答案 0 :(得分:0)
独白的风暴,只是给出这个答案以打破主题。事实证明,问题实际上是在theProduct
URL中传递的load
参数字符串中的空格错误(mea culpa)。结果是微妙的,不会在我期望它们的地方抛出错误,因此导致我认为这是一个jQuery /事件问题。排序后,我能够将所有内容放在$(document).ready(function()
内,并且jQuery按原设想工作。道德?在向GET查询添加字符串时,请记住要谨慎处理文本编码。