在页面加载结束时运行Javascript

时间:2017-01-06 11:07:11

标签: javascript jquery html ajax

我正在尝试在Ajax中请求一个页面和一个普通的GET请求。我的基本布局是这样的:

<html>
  <head>
    //css file
  </head>

 **************
  <body>

  <script> </script> // this script needs to be loaded at the end of the page load in both GET and AJAX

  </body>

 *****************
  //js files (jQuery)

</html>

*中的区域由ajax加载

如果我发出GET请求,我会得到完整的页面。如果我发出Ajax请求,我只得到正文部分(没有jQuery)。

现在,body标签包含一个脚本标记。

<script type="text/javascript">
  window.onload = function() {
    $.getJSON("/loc", function (data) {
      // .......
    });
  };
</script>

当我发出GET请求时,此代码运行正常。页面加载后执行此脚本。但是当我发出Ajax请求时,脚本不会执行,因为页面已经加载了。

所以我试过了:

<script type="text/javascript">
  $(document).ready(function () {
    $.getJSON("/loc", function (data) {
      .....
    });
  });
</script>

现在这适用于Ajax,但不能使用GET请求,因为jQuery位于页面的末尾。

script标签位于body标签内,jquery位于body标签之后,所以如果我在jQuery之后移动它。所以我需要为我的页面制作2个设计:1个用于我的Ajax请求,1个用于我的GET请求。如果不是在Ajax中,我将最终加载jQuery脚本两次。

所以我的问题是我可以为Ajax和GET请求运行一个脚本吗?

2 个答案:

答案 0 :(得分:2)

  

现在这适用于ajax,但不适用于GET请求   因为jquery位于页面的末尾

将所有脚本(和脚本标记)放在jquery之后,一切都应该正常工作。

答案 1 :(得分:0)

您的问题仍然不明确,但要尝试指出正确的方向。

好的,你的基本问题是:

  

这个脚本需要在GET中的页面加载结束时加载   和AJAX

您尚未详细说明此脚本的内容或必须加载的原因,但我会说,不需要加载

加载页面时,脚本会被加载。加载ajax时,您不需要重新加载脚本,因为它已经加载了!如果您需要在脚本中调用某些内容,这是另一回事,只需调用相关方法,但不要重新加载脚本。它已经离开了它。

  

我发出GET请求,我得到了完整的页面。

再说一遍,不要这样做。这不是AJAX应该如何工作的。仅通过动态加载您想要的页面的部分:

<html>
  <head>
    //css file
  </head>
  <body>

  <script> </script> // this script needs to be loaded at the end of the page load in both GET and AJAX
  //NO IT DOESN'T!


  <div>
       **DYNAMIC section load this and only this**
  </div>
  </body>

  //you don't need to load JQUERY again. It's already loaded just use it.
  //js files (jQuery)

</html>
  

使用Ajax很好,但不能使用GET请求,

听起来你试图将一个简单的链接变成一个AJAX请求。哪个没问题,但您不能简单地用getJSON替换链接,并希望它能正常工作。它比这复杂得多。基本上你离你需要的地方很远。花更多时间学习AJAX和异步加载页面。它并不像将一些javascript函数放入页面那么简单,而且只是单页应用程序的中提。