在 AJAX 调用中调用更改方法

Call onChange method in AJAX call

本文关键字:调用 方法 AJAX      更新时间:2023-09-26

我有一个下拉列表,并使用第一个下拉列表中的选定值制作另一个下拉列表。

<s:select name="selectedList" list="list" listKey="name" listValue="name"
      onchange="showList(this);return false;"/>
     <s:url id="server_url" action="cls/ListAction"/> 
     <sx:div showLoadingText="false" id="details" href="ListAction" theme="ajax"
         listenTopics="show_server_list" formId="config_frm"><sx:div>

结果 ajax jsp:

<s:select name="selectedApplication" 
          list="applications" listKey="name" 
          listValue="name" onchange="javascript:hideFilterSection();"/>  

在这里我有 onchange 方法 hideFilterSection,这不是在调用...

所以我有两个下拉列表,第一个和第二个(ajax),并且基于第二个下拉值,我需要在jsp中隐藏一些东西,但是第二个下拉列表更改没有调用,请让我知道我如何实现它

提前致谢

首先,sx: 标签在 IE 10 或 11 中不起作用。如果您仍然想在IE 10 +中使用它,则需要在标头中包含meta http-equiv="X-UA-Compatible" content="IE=9",并且它必须是标头中的第一个元标记。它将告诉IE使用IE 9兼容模式。

其次,确保包含或与hideFilterSection()相关的 js 文件位于查询页面而不是 ajax 结果页面中。

最后但并非最不重要的一点是,我在上面找不到任何错误。请检查您的 js 函数及其参考或您使用的 IE 版本。

我建议你避免使用旧的、有缺陷的内置 Dojo 版本,并迁移到 Struts2-jQuery 插件,甚至更好地迁移到原始 jQuery。

但是谈到您的问题,您缺少executeScripts参数,默认情况下false

从文档中:

executeScripts:获取内容中的 Javascript 代码将被执行

这应该有效:

<sx:div executeScripts = "true"
       showLoadingText = "false" 
                    id = "details" 
                  href = "ListAction" 
                 theme = "ajax"
          listenTopics = "show_server_list" 
                formId = "config_frm" >
</sx:div>  

请注意,您需要将separateScripts设置为 false(默认值为 true ),以便从结果 JSP 访问主 JSP 中定义的 javascript 函数,否则您需要在结果 JSP 中定义hideFilterSection()函数,因为它们的作用域是分开的。

separScripts:在单独的范围内运行脚本,每个标签都是唯一的