Javascript jQuery:设置通过SJAX调用检索的HTML正在停止并中断它';s父函数 问题
当尝试使用SJAX更新我网站的某些部分,然后使用jQuery的.html()方法设置通过请求收集的信息时,它似乎正在中断/停止其父函数的执行 实例 尝试执行Javascript jQuery:设置通过SJAX调用检索的HTML正在停止并中断它';s父函数 问题,javascript,jquery,ajax,Javascript,Jquery,Ajax,当尝试使用SJAX更新我网站的某些部分,然后使用jQuery的.html()方法设置通过请求收集的信息时,它似乎正在中断/停止其父函数的执行 实例 尝试执行.done()的回调后,下面显示的函数将停止,使doSomeStuff()函数无法执行: function myFunctionUpdater() { ... ... ... jQuery.ajax({ type: "GET", cache: false, url: "/something/some
.done()
的回调后,下面显示的函数将停止,使doSomeStuff()
函数无法执行:
function myFunctionUpdater() {
...
...
...
jQuery.ajax({
type: "GET",
cache: false,
url: "/something/somethingelse/anything.jsp",
async: false
}).done(function(data) {
jQuery("#container").html(data);
});
...
...
...
doSomeStuff();
}
解决办法!
通过在javascript中使用元素的innerHTML将更新的数据设置到容器中
document.getElementById("container").innerHTML = data;
事实!
- jQuery版本:1.8.2
- 通过SJAX请求接收的数据大小:~3.2 KB
- 出现问题:随机
- 为什么使用
而不是jQuery.html()来完成任务?毕竟,.innerHTML
使用.html()
执行替换操作.innerHTML
- 在尝试设置检索到的HTML数据时,
是否有任何原因停止工作myFunctionUpdater()
async:false
makesdosomething()
仅在Ajax之后执行,但是,如果您想在每次Ajax调用时运行它,请将其放入.always(function(){doSomeStuff();})
中,与.done(function(){})
一样。而且,您的javascript在$(“#容器”)中
?如果是这样,您将覆盖javascript。通过innerHtml工作,情况似乎并非如此。我的最后一个建议是用.done
替换.success
@klauskpm:No,我的javascript位于外部文件中。根据文档,使用SJAX必须使用success/error/complete
回调,而不是jqXHR.Ok的done()/fail()/always()
方法。因此,如果执行一些alert('stuff after sjax')代码>它可以工作?@klauskpm:它不能工作,它只是在尝试使用.html()
Ok更新内容时停止。您能给我们看一下您请求的输出或响应图像吗?