【问题标题】:Dynamically added content on template don't respond to Javascript/AJAX/Jquery in CodeIgniter模板上动态添加的内容不响应 CodeIgniter 中的 Javascript/AJAX/Jquery
【发布时间】:2015-08-16 09:36:34
【问题描述】:

这是我的模板示例代码。

<?php
 defined('BASEPATH') OR exit('No direct script access allowed');
  ?>
 <!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="utf-8">
 <title>WebLAB</title>
 <link rel="stylesheet" href="<?php echo base_url()?>assets/css/bootstrap.css" />
 </head>
 <body class="container">   
 <header class="panel-heading" role="navigation">
  <a class="navbar-brand" href="<?php echo base_url(); ?>">WebLAB</a>
  <nav>
      <ul class="nav nav-tabs" role="tablist">
      <li><a href="<?php echo base_url(); ?>portal/registration">Register</a></li>
        <li><a href="<?php echo base_url(); ?>portal/about">About this site</a></li>
      </ul>
  </nav>
 </header>
 <section class="container">

  <!--- Dynamic content is loaded here!-->
 <?php if(isset($content)) echo $content; ?>


 </section> 
 <footer class="panel-footer text-center">
  <span><small>All Rights Reserved | &copy; <?php echo date('Y'); ?> Christ the King College-ICT Team</small></span>
 </footer>

 <script type="text/javascript" src="<?php echo base_url()?>assets/js/jQuery-1.10.2.js"></script>
 <script type="text/javascript" src="<?php echo base_url()?>assets/js/bootstrap.js"></script>
 </body>
 </html>

下面的代码是我正在加载到上面代码的内容(它是动态嵌入内容)。我的问题是我试图应用于元素的 Javascript 代码没有响应。我也试过在上面的主页上添加脚本。

    <script type="text/javascript">
            $(document).ready(function(){
                $('#jq').click(function(){
                  alert("Hi");
                });
            });
    </script>

    <section class="col-md-8">
      <p>
         <h2 id="jq">Register Your Account here to Login!</h2>
      <p>
      <article>
        <p>
          You can only access your account when the admin 
          approves your request for registration.
        </p>
      </article>
    </section>

  <section class="col-md-4">   
    <form method="post" class="regform" action="<?php echo base_url();?>portal/register" role="form">
      <div class="form-group">
        <label for="Username" id="sample">Username:</label>
         <input type="Username" class="form-control" id="Username" name="username" placeholder="example@mail.com" required>

      </div>
      <div class="form-group">
         <label for="pwd">Password:</label>
         <input type="password" class="form-control" id="pwd" name="password" required>
      </div>
      <div class="form-group">
         <label for="pwd">Retype-Password:</label>
         <input type="password" class="form-control" id="pwd" name="repassword" required>
      </div>
      <button type="submit" class="btn btn-default">Register</button>
   </form>
</section>

我在 CodeIgniter 3 控制器中使用了这种技术。

public function registration() {
    $data = null;
    $data['content'] = $this->load->view('pages/registration', $data, true);

    $this->load->view('template/temp_portal.php', $data);
}

抱歉,代码混乱。非常感谢您的帮助。顺便说一句,这只是一个示例代码。

【问题讨论】:

  • 同一个问题,$(document).ready(function(){ $(document').on('click','#jq',function(){ alert("Hi"); }); });
  • 感谢您提供此信息。 Convert2Int。我应该将此脚本添加到模板还是内容中?
  • 此代码是否应该仅在定义按钮的页面中可用
  • 是的,我认为脚本应该在按钮被嵌入或加载到主页或模板时定义的地方一起出现。你对我应该怎么做有什么建议吗?
  • 将 js 代码与 html 分开,并在页面第一次加载时加载,而不是部分加载

标签: javascript php jquery ajax codeigniter


【解决方案1】:

您的问题是您在加载库之前使用的是 jquery。在head 标记中加载包含 jquery 库的 JS 文件。它会起作用,即

<?php
 defined('BASEPATH') OR exit('No direct script access allowed');
 ?>
 <!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="utf-8">
 <title>WebLAB</title>
  <link rel="stylesheet" href="<?php echo base_url()?>assets/css/bootstrap.css" />
  <script type="text/javascript" src="<?php echo base_url()?>assets/js/jQuery-1.10.2.js"></script>
<script type="text/javascript" src="<?php echo base_url()?>assets/js/bootstrap.js"></script>
 </head>
 <body class="container">   
 <header class="panel-heading" role="navigation">
  <a class="navbar-brand" href="<?php echo base_url(); ?>">WebLAB</a>
  <nav>
  <ul class="nav nav-tabs" role="tablist">
  <li><a href="<?php echo base_url(); ?>portal/registration">Register</a></li>
    <li><a href="<?php echo base_url(); ?>portal/about">About this site</a></li>
  </ul>
</nav>
</header>
<section class="container">

 <!--- Dynamic content is loaded here!-->
 <?php if(isset($content)) echo $content; ?>


</section> 
<footer class="panel-footer text-center">
 <span><small>All Rights Reserved | &copy; <?php echo date('Y'); ?> Christ the King College-ICT Team</small></span>
</footer>


</body>
</html>

试试这个并检查你的控制台现在显示什么错误

仔细检查您的 jQuery 库链接是否正常

【讨论】:

  • 我已经尝试添加它,但它仍然不起作用。我尝试将其从内容移至模板。我不知道我是否做得对。我希望你能给我一些示例或链接,我将不胜感激。这样我也可以从中学习。谢谢顺便说一句:)
  • 我认为现场活动已被删除,而是在活动中使用
  • @ConvertToInt32 没错。但是添加迁移库后它可以工作
  • 你把js脚本放在哪里有问题吗?顺便说一句,我曾尝试将脚本放在首位,但它似乎永远不会起作用。我不明白为什么将它放在顶部或底部是一个问题,因为我已经在模板中调用了脚本,并且我的自定义 js 被放置在我试图动态加载的页面上。
  • 顺便说一句,您的内容在 jquery 的上下文中不是动态的。如果您在 jquery 代码之后加载 jquery 库,您的任何 jquery 代码将永远无法工作,就像您所做的那样。再次检查我的编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多