Web2py - 如何在 ajax 之后确定负载控制结束

Web2py - How to determine end of load control after ajax

我 运行 ajax 调用将插值更新为完全构建的 select 框元素。

我想将 created/returned selectbox 转换为选定的 selectbox 一旦它完成完全加载 否则它会恢复回到常规 select 框。

我试过:

主要代码行:

JavaScript 通话:

ajax('{{=URL('controller_name', 'func_name')}}', ['param1'], 'target_div');

Python controller returns(this returns a select control with option objects initiated in it and override the target_div inner html):

return SELECT(distinct_values, _id = 'selectbox_id' , _multiple = 'true' , _class='SelectBoxSingleDisabled');

寻找面向 web2py 的解决方案。如果可能,不要使用粗暴的 force/hacky 东西。谢谢!

有几个选项(建议前两个):

  1. 在controller中,将Chosen初始化代码添加到response.js -- 这将在返回的HTML添加到DOM后执行。

  2. 在 select 元素之后的脚本元素中添加 Chosen 初始化代码:

    CAT(SELECT(distinct_values, _id = 'manual_group_selectbox' , _multiple = 'true' ,
               _class='SelectBoxSingleDisabled'),
        SCRIPT('[Chosen code]'))
    
  3. ajax()函数的第三个参数可以是一个Javascript函数,它接受服务器返回的数据。因此,您可以编写一个函数,将返回的 HTML 添加到 DOM,然后初始化 Chosen:

    ajax(
      '{{=URL('controller_name', 'func_name')}}', ['param1'],
      function(html) {
        [add html to DOM]
        [initialize Chosen]
      }
    );
    
  4. 设置一个jQuery.ajaxSuccess()事件处理器,它应该运行在ajax()函数更新DOM之后。