MSIE:jQuery的append()/ html()不起作用,使用了getElementById().innerHTML

Cha*_*cey 6 jquery internet-explorer append innerhtml getelementbyid

这个很长,

前提

被召集来帮助客户修复他们当前项目的一些错误.需要修复的是一份工作清单页面.您有一个作业列表,单击一个,如果激活了JavaScript,则会调用AJAX来将作业的详细信息动态加载到现有元素中(DIV#emploi_details).如果未激活JS,则只需使用作业的详细信息重新加载页面(不太重要).

我跳上他们的实验室服务器在dev网站上工作.

问题

基本上,IE7(起初)没有显示通过$().load()加载的内容.IE6与innerHTML一起工作顺利.请求已发送,我每次都会收到回复.我收到数据,我可以提醒()它并看到它,但实际的内容转储不起作用.Safari,Firefox,没问题.我正在加载信息的DIV#emploi_details元素有一个CSS显示:none; 在其样式表中,并在加载内容后显示(其他不那么重要的细节).

show_emploi = function(id, succ_id)
{
    $('#emploi_details').fadeOut(800, function() {
        var $$ = $(this);

        $$.load('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
            if (isIE6) document.getElementById('emploi_details').innerHTML = data;
            $$.show();
        });
        $('#bgContent').fadeOut();
    });
}
Run Code Online (Sandbox Code Playgroud)

解决方案

起初我的印象可能是$().load()刚刚起作用,所以我改为$ .get()来更好地控制加载内容的操作.

$.get('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
    $$.empty().append(data).show();
});
Run Code Online (Sandbox Code Playgroud)

这有效.在所有浏览器中包括IE6和IE7.没问题.很奇怪,但你知道它是否有效并且全面防范,不要问问题.

剧情扭曲

现在这里的狗屎很奇怪.我认为修复了这个错误并将解决方案应用到了实时网站上......它不起作用.IE就是不喜欢它.在尝试$ .ajax和所有其他类型的东西后,我最终在实时网站上使用这个:

$.get('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
    document.getElementById('emploi_details').innerHTML = data;
    $$.show();
});
Run Code Online (Sandbox Code Playgroud)

它适用于所有浏览器,因为没有像准系统JS那样完成任务.必要的是,此修复程序也适用于开发网站.

'待续'

嵌入内容的功能有些不是针对所有浏览器(显然是服务器)的点击.

总而言之,我的问题是WTF问题.我无法理解为什么一方在一方工作而另一方无效,甚至为什么它在开始时从未正常工作($().load()).它显然没有不同的jQuery版本(1.2.6),因为这是我第一次验证框架版本的本能.

无论如何,有趣的神秘IMO.

希望Stackland的人有上帝给出的答案.

谢谢

小智 2

我已经解开了谜题!这是我的问题的一个有效示例。诀窍是在第一次成功后调用另一个 AJAX,这会以某种方式覆盖innerHTML 的问题。谢谢你们让我走上了正确的方向。

我希望这会对一些人有所帮助,因为到目前为止我还没有看到可行的解决方案。我还将为此联系 jQuery :P

$.ajax({
url:'modifyarticle.php',
type:'POST',
data:{
 id:this.id,
 article:'something',
 mode:'single',
 action:'delete'},
cache:false,
success:function(msg) {
 alert(msg);$.ajax({
  url:'getall.php',
  type:'GET',
  cache: false, 
  success: function(data) {
   $('#output').html(data);
  }
 });
}});
Run Code Online (Sandbox Code Playgroud)

致敬