Javascript jQuery:设置通过SJAX调用检索的HTML正在停止并中断它';s父函数 问题

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

当尝试使用SJAX更新我网站的某些部分,然后使用jQuery的.html()方法设置通过请求收集的信息时,它似乎正在中断/停止其父函数的执行

实例 尝试执行
.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
  • 出现问题:随机
问题!
  • 为什么使用
    .innerHTML
    而不是jQuery.html()来完成任务?毕竟,
    .html()
    使用
    .innerHTML
    执行替换操作

  • 在尝试设置检索到的HTML数据时,
    myFunctionUpdater()
    是否有任何原因停止工作


我真的不记得是否
async:false
makes
dosomething()
仅在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更新内容时停止。您能给我们看一下您请求的输出或响应图像吗?