【发布时间】:2020-01-07 13:28:02
【问题描述】:
这是场景,不知道我错过了什么。
页面 A.htm 向页面 B.htm 发出 ajax 请求,并将响应插入到页面中。
页面 B.htm 包含指向其他几个 JS 文件的链接,其中许多文件包含一个 document.ready() 函数来初始化它们。
当 A.htm 和 B.htm 在同一台服务器上时,这可以正常工作,但在它们位于不同服务器上时则不行。
我认为我在这里看到的是,当页面 A 和 B 位于不同的服务器上(跨域 ajax)时,外部资源被异步返回,或者至少是乱序返回,因此脚本正在执行,期望 JQuery.UI 已经加载,而实际上没有加载。
感谢任何指针或建议。抱歉解释不佳。
【问题讨论】:
-
已经有一段时间没用过jQuery了,但是.ajax不返回一个promise吗?您可以调用 .done(second ajax request) 以确保它们以正确的顺序返回吗?类似于: $.ajax().done(function(data){ if (data) {$.ajax()} )
-
没有第二个ajax请求。至少现在还没有——我们需要先正确加载这些外部资源! :)
-
好的。但是这样的事情会起作用吗? $.ajax(一些请求).done(function(data){做第二个任务})。基本上等待返回的脚本,然后再继续进行其他操作?对不起,如果我误解了这个问题。
-
容易误会。 A.htm 中没有第二个任务,它想要加载 B.htm 并且外部脚本包含下一个任务......但它们无法触发,因为它们试图无序触发。 $ 未定义,因为 jquery.min.js 在 my.module.js 尝试使用它之前没有加载。
-
我猜当你在 DOM 中注入 JavaScript 文件时,它们的执行顺序并不能保证。较小的 JS 文件可能会在较大的 JS 文件之前加载和执行。我看看能不能找到具体的参考资料。
标签: javascript jquery ajax