Javascript 为什么使用jQuery.get()在ajax调用的回调函数中计算DOM时为空?
我运行此函数以成功获取div#contents中的html内容。但是当我使用deferred.always回调函数时,任何DOM元素都为null(包括窗口!)。 有人能解释一下原因和解决办法吗?谢谢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.
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的代码中不能访问窗口”。好吧,这意味着一些玩笑,不应该出现在这里,抱歉让你严肃起来。