0

我有一个布局,可以加载我在整个应用程序中使用的所有公共资源,但是当我通过 ajax 加载页面时,gsp 本身会呈现,我可以看到 ajax 调用下载了 js 文件(通过 firebug),但实际代码没有得到执行.

我尝试了以下方法从ajax加载页面下载并执行js文件,但没有成功。任何帮助将不胜感激。

使用的方法

<r:require modules="announcements" />
<r:layoutResources/>

结果:js文件下载但未执行

使用的方法

<g:javascript library="announcements"/>

  with and without

  <r:layoutResources/>

结果:文件未下载

方法:

<script type="text/javascript" src="js/announcements.js"></script>

结果:http 代码 302 临时移动并尝试下载 js/static/announcements.js,它给出了 http 代码 200 但萤火虫显示它仍在等待该文件,因此它没有被执行。

布局.gsp:

<html>
  <head>
    ...
      <g:if test="${session.isLoggedIn}">
        <r:require modules="ui, jqueryDateFormat, loggedin" />
      </g:if>
      <g:else>
        <r:require modules="ui" />
      </g:else>
      <r:layoutResources/>

      <g:layoutHead />
  </head>
  ...
</html>

ajax加载页面

<html>
  <head>
    <all methods mentioned above>
    ...
  </head>
  <body>
    ...
  </body>
</html>

更新:我解决了这个问题。原来我的 JS 文件中有语法错误。Firebug 没有发现错误,它只是因为 JS 崩溃而停止。不得不将库调用移动到我的布局以查找错误。修复了 JS 并将该行添加回 gsp 并再次工作。

4

1 回答 1

0

这是最正确的方法。

<script type="text/javascript" src="js/announcements.js"></script>

如果 302 产生 200 但文件未下载,您应该检查您的网络服务器配置

于 2013-01-09T00:47:47.500 回答