我在 Struts 2 中通过 Ajax 调用加载内容时遇到一个简单的问题(使用 Struts2 Dojo 插件)。它会正确加载页面中的所有 HTML 内容,但如果该页面内有任何内联 JavaScript 函数,则不会全部加载。我不知道Struts 2 Ajax是否有一些限制。
这是我的
parent.jsp
:
<s:head/>
<body>
<div id="casetab2" class="casetab_content">
<sx:div href="LoadContent" delay="3000">
Initial Content
</sx:div>
</div>
</body>
这是我的
child.jsp
:
<s:text name="name" label="NAME"/>
<script>alert("hello")</script>
这是我的
struts.xml
:
<action name="LoadContent">
<result>child.jsp</result>
</action>
结果:显示
NAME:<textfield>
,但没有出现警报消息。
这是一个已知问题...
理论上,只需将
executeScripts="true"
添加到 <sx:div/>
即可,但如果还不够,请尝试使用 separateScripts
属性。
警报消息未发送,因为它未编译为有效的 JavaScript。如果你打开萤火虫,你会看到错误计数。使用经过分号版本修正的代码
<script type="text/JavaScript">alert("hello");</script>
其他错误修复:
1) 包含 head 标签
2)根据Andrea的回答使用标签属性
<head>
<sx:head/>
</head>
<body>
<div id="casetab2" class="casetab_content">
<sx:div href="LoadContent" delay="3000" separateScripts="false" executeScripts="true">
Initial Content
</sx:div>
</div>
</body>