【发布时间】:2011-01-15 06:46:35
【问题描述】:
我有一个查询数据库服务器以查看是否有新记录的 jquery ajax 函数。如果是这样,它会使用以下方法在记录列表的顶部插入新记录(具有唯一 ID):
$(new_records).insertAfter('#div_at_top_of_page');
即使在 IE6 中也可以正常工作。
但是,每个插入的记录都有一个辅助 ajax 函数来获取有关该记录的更多详细信息并将其插入到插入元素内的元素中。
这适用于所有浏览器除了 IE6。 IE6 执行辅助 ajax 功能(我已经确认),但不插入内容。它静默失败,不会抛出任何错误。
我假设这是因为 IE6 看不到 DOM 中插入的元素;但无论如何,我将不胜感激有关如何解决此问题的任何想法。
编辑 2 - 我在下面的第一次编辑中添加的代码似乎运行良好。问题是 IE6 不知道 $('#inserted_data_' + log_id) 存在。这是使用上述.insertAfter() 方法插入的元素。
编辑 - 用于插入辅助数据的代码:
$('.printout').live('click', function(ev) {
ev.preventDefault();
var ajaxUrl = $(this).attr('href');
$.ajax({
url: ajaxUrl,
cache: true,
dataType: 'json',
success: function(j, textStatus) {
var printout = j.printout;
alert(printout); // sanity check
var log_id = ajaxUrl.replace('/api/fetch_data/printout/', '');
$('#inserted_data_' + log_id).html(printout); // problematic line
}
});
return false;
});
正如我所指出的,该函数执行正确,正如 // sanity check 所证实的那样,但上面提到的带有注释 // problematic line 的行实际上并未将数据写入 '#inserted_data_' + log_id 元素。
【问题讨论】:
-
提供一些代码来说明第二次 ajax 调用是如何以及何时发生的,以便我们评论..
标签: jquery dom internet-explorer-6