Ajax返回HTML子模板 - 在DIV中插入失败

时间:2011-06-16 02:22:04

标签: javascript jquery css ajax dom

以下脚本从AJAX调用中获取HTML - HTML在浏览器中自行显示 - 我使用InnerHtml将其放在DIV中,我收到javascript错误:

未捕获的TypeError:无法调用未定义的方法'setData'

我在模板中通过硬编码放置了相同的HTML,它运行正常 - 当我在动态插入DIV时它不起作用!任何想法?

<script> 
  $(document).ready(function() 
  { $('ul.art-vmenu li').click(function(e) 
     { 
       //Ajax call to get content:
       $.ajax(
       {
             type: "GET",
             url: "/create",
             data: "",
             success: function(msg)
             {
               //alert(msg);   
               document.getElementById("art-post-inner art-article").innerHtml = msg; 
               //$("#art-post-inner art-article").html(msg);  // jQuery call             
               window.clipboardData.setData("Text", msg);  // for debug in IE               
             }
       });

     });
  });    
</script>   

3 个答案:

答案 0 :(得分:3)

首先:它是innerHTML,而不是innerHtml

第二:您使用的浏览器是什么? clipboardData仅在IE中可用

同时检查:How do I copy to the clipboard in JavaScript?

答案 1 :(得分:2)

您尝试在未定义的值上引用innerHTML,因为document.getElementById正在返回undefined,因为此代码要求的ID无效:

document.getElementById("art-post-inner art-article").innerHtml = msg; 
//            Spaces not allowed ------^     and      ^----- Should be innerHTML

pointing out innerHTML document.getElementById事件的+ 1到roberkules,我读过它。)

ID的规则取决于您使用的是HTML4及以下,HTML5(更宽松)还是CSS(限制性),但他们都有一个共同点就是您不能拥有空间ID:

我的猜测是不是一个ID,你打算将它作为某种选择器,但是由于你没有显示任何标记,我无法指出如何你可以解决它,除了说如果它是一个选择器,你不想要$,你想要使用jQuery的{{1}},就像你在代码中的其他地方一样。

答案 2 :(得分:1)

您正在获取“未捕获的TypeError:无法调用未定义的方法'setData'错误,因为window.clipboardData未定义。 innerHtml也错了。

你应该总是使用jquery html方法将html设置为任何dom元素,因为jquery负责执行任何带有你正在设置的标记的脚本标记。