Javascript 为什么使用jQuery.get()在ajax调用的回调函数中计算DOM时为空?

Javascript 为什么使用jQuery.get()在ajax调用的回调函数中计算DOM时为空?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我运行此函数以成功获取div#contents中的html内容。但是当我使用deferred.always回调函数时,任何DOM元素都为null(包括窗口!)。 有人能解释一下原因和解决办法吗?谢谢 function loadHomec(){ $.get("../ajax/homec.html", function(data) { $(contents).html(data); }).always(function() { console.log(window.document.

我运行此函数以成功获取div#contents中的html内容。但是当我使用deferred.always回调函数时,任何DOM元素都为null(包括窗口!)。 有人能解释一下原因和解决办法吗?谢谢

 function loadHomec(){
$.get("../ajax/homec.html", function(data) {

$(contents).html(data);


}).always(function() {
    console.log(window.document.getElementById('myId').value);
});
}
从homec.html返回的数据如下所示:

       <p>
Welcome 

</p> <ul>
    <li>
        <a href="#"  onclick="loadNewType()">Create New Object Type</a></li>
    <li>
        <a href="#" onclick="loadtreeForTypes()">Create New Object</a></li> 
    <li>
        <a href="#">Create New RulesSet</a></li>
</ul>

欢迎


这表明一切正常,除非成功处理程序中出现异常。这是一个候选项,因为您还没有提供如何定义
内容。考虑到您的项目中有jquery,使用vanilla js读取DOM对象是值得怀疑的,我希望代码应该类似于
$('#contents').html(数据)

输入
,将具有属性
,对于其他dom元素,您需要通过
内部文本
内部HTML
获取文本

如果您已经使用了jQuery,为什么不直接使用
$('myId').text()
$('myInput').val()

函数loadHomec(){
$.get(“./”,函数(数据){
console.log('Do!');
}).always(函数(){
console.log('Always!');
log(window.document.getElementById('myId').innerHTML);
console.log(window.document.getElementById('myId').innerText);
console.log(window.document.getElementById('myInput').value);
});
}
loadHomec()

这是一个div

var contents=$(“#contents”)
是否已在函数外部定义?@Satpal contents是调用函数的页面中的一个div。
data
看起来如何?将它添加到您的问题中。@fuyushimoya不,我没有,但它可以工作,并将请求的html页面的内容加载到div内容中。我为您创建了一个简单的,似乎可以工作,并且能够获得
窗口及其子窗口,请编辑它,使模板适合您的问题,否则我们可能无法提供帮助。但他说
窗口
,他可以保证,这意味着它始终到达,而在JSFIDLE中,错误原因始终不会执行。meh!所以你骗我说,
winodw
null
,我不知道这是怎么回事:P@fuyushimoya作为一名web开发人员,您应该明确知道:)
window
是一个全局对象,它怎么可能不可访问?你甚至不能重新分配它。唯一的方法是在节点下运行javascript。js@KirillSlatin所以我的意思是“我不知道如何在一个类似于broswer的代码中不能访问
窗口”。好吧,这意味着一些玩笑,不应该出现在这里,抱歉让你严肃起来。