3

请回答这个问题,因为我未能正确理解该问题,并且根本找不到任何可以阅读的材料。这个问题,一般来说,需要考虑以下常用的结构。是的,JS 可能会排在最后,但这是一个不同的讨论。

    <html>
     ...
    <script>
        $(document).ready(function () {
          ....  //Script to be used in this document
        });
    </script>
       ...more html
    <div id="ajax_div" ... > 
      <script>
         **$(document).ready(function ()** { //2nd wrapper
            ....
          });
      </script>
         ... AJAX returned HTML
    </div>

问题:是否需要在 AJAX 响应中生成第二个包装器?我知道 document.ready 确保 DOM 在 JS 可以处理之前准备好。那么,同样的逻辑是否应该不适用于 AJAX 生成的 JS?是否有需要和不需要的情况?我有一种情况,即为 AJAX 生成的 JS 准备好的文档包装器修复了一些问题,但一直以来我都没有将它用于其他情况,一切都很好!!!

希望这不是一个愚蠢的问题!如果是重复的,请参考我。我找不到任何...

4

1 回答 1

1

考虑以下场景:

  1. 您在浏览器中加载了一个页面。浏览器必须加载一些包含的 javascript,这些 javascript 在加载时会被解析。
  2. 当页面仍在加载时:
    1. 解析后的 JS 发送了一个 AJAX 请求。
    2. 服务器发回响应文本
    3. AJAX 调用的 success() 处理程序希望将返回的文本添加到尚未加载的 div 中。
    4. 错误
  3. 文档完成加载时触发文档就绪事件。

现在,在步骤 2.3 中,可能会发生返回的代码或成功/失败回调能够处理部分加载的文档,因为它们的目标在那个时间点已经加载。然后您将不会注意到任何错误。

另一方面,如果 AJAX 调用本身在文档准备好后被触发,那么您生成的 JS 不必将自己包装在一个document.ready块中。

于 2013-11-19T18:53:13.183 回答