【问题标题】:What is the best practice for adding a template into a page using PHP and jQuery AJAX使用 PHP 和 jQuery AJAX 将模板添加到页面的最佳实践是什么
【发布时间】:2013-03-20 09:48:23
【问题描述】:

我正在尝试在 PHP/jQuery 环境中模仿 ASP 主页面/内容页面概念,其中我可以在主页面中运行 AJAX 调用以动态包含内容页面。我在母版页中添加了一个 div 占位符,并使用以下代码动态添加内容页:

     $.ajax({
         url: "ajax.php"
         , type: "POST"
         , data: {'cmd' : 'dashboardView'}
         , success: function(response, sts){
              if(response.flag)
              {
                   $("#divMainContentPHolder").html('');
                   $("#divMainContentPHolder").html(response.mainContent);
              }
              else
                   alert(" unsuccessful!");
         }
         , dataType: "json"
     });

代码运行正常,但问题是,由于内容页面中有一些javascript函数,如果上述函数第二次运行,函数就会重复,从而多次运行。 我想知道是否有人可以帮助我了解这种开发的最佳实践是什么。 谢谢

【问题讨论】:

  • 通常最容易在主页加载所有函数,然后在成功回调中调用新内容所需的函数。取决于项目的范围和规模。也可以使用getScript 并在再次加载之前检查函数是否已经存在。您在内容页面中加载了哪些功能?
  • 大部分函数用于操作数据或运行其他一些 ajax 调用以根据用户交互保存或检索数据。当然还有 $(document).ready(function() {...});在每个内容中为使用插件和其他准备工作。我想要在主页中加载所有功能的想法。我什至可以为每个内容的相关 javascript 创建不同的 .js 文件并将它们加载到主页中。但是如何处理每个内容的 $(document).ready 部分?

标签: php jquery optimization memoization front-controller


【解决方案1】:

如果您希望一个函数只运行一次,只需命名它以重新定义它:

success: function onetimer(response, sts){
          if(response.flag)
          {
               $("#divMainContentPHolder").html('');
               $("#divMainContentPHolder").html(response.mainContent);
          }
          else
               {
               alert(" unsuccessful!");
               }

          onetimer = function(){}; /* redefine me as an empty function */
     }

后续调用将无济于事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2014-11-10
    • 2012-12-12
    • 2015-05-01
    • 2019-04-16
    相关资源
    最近更新 更多