带有document.ready()侦听器的动态脚本没有执行ajax调用
Dynamic Script with document.ready() listener not executing with ajax call
我的页面使用了1.8.1版本的jQuery插件。我创建了一个函数,按照下面的代码创建动态脚本,并将其放置在HTML页面的BODY中。
<script> $(document).ready(function(){ // .... Some javascript }); </script>
上面的动态脚本使用AJAX获得一些额外的HTML和JQuery,并将其附加到Body标记,但在AJAX完成后它不会执行。如果我像下面这样添加一个简单的警告("某事"),那么它就会执行。
<script> alert('something'); $(document).ready(function(){ // .... Some javascript }); </script>
请告诉我是什么问题,我想执行动态脚本与document.ready()没有警报()框..
这是因为文档准备事件已经发生。因为您的页面已经完全加载。
为了知道什么时候AJAX完成了,什么时候Document准备好了,您可以使用如下代码:
var docReady = new $.Deferred();
var ajaxDone = $.ajax({
url: "whatever",
type: "GET",
blah blah blah
});
$(document).ready(function () {
docReady.resolve();
});
$.when(ajaxDone, docReady).done(function () {
// Document is ready and AJAX request is successful
});
如果AJAX请求失败(无论出于何种原因),则$.when().done
回调不会执行。它要求两个延迟对象都成功完成。如果您不关心AJAX是否成功,可以将.done
更改为.then
。
相关文章:
- 在服务器端脚本执行后关闭选项卡
- 脚本执行多次
- 根据屏幕大小阻止脚本执行
- 检测TAB键并使脚本执行成为条件
- 脚本执行,但代码隐藏不执行
- 如何使用应用程序脚本执行API从谷歌工作表中提取数据
- 为什么设置window.location.htm不会停止脚本执行
- document.write(“anything”) 不会在 Internet Explorer 中作为外部脚本执行
- Extjs4 和 IE8 :选项卡上的 beforeclose 事件会抛出“无法从释放的脚本执行代码”
- 具有 asyc 属性的脚本仍会阻止其他脚本执行
- 如何在特定行暂停 JS 脚本执行
- JavaScript - 在高负载脚本执行之前绘制 html-mask
- 重新加载 Chrome 扩展程序内容脚本执行环境
- 将脚本执行保留在新打开的页面中
- 在脚本执行结束时关闭弹出窗口
- JavaScript 脚本执行时间太长.获取脚本需要太长时间提示
- 为什么 url 中的“#”会阻止 jquery 脚本执行
- 脚本执行两次,但时间戳相同
- Javascript setTimeout 会停止其他脚本执行吗?
- jQuery 在单击事件中的 if 条件后停止脚本执行