首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用codeigniter和php的单独文件中的Jquery

使用codeigniter和php的单独文件中的Jquery
EN

Stack Overflow用户
提问于 2012-06-03 03:28:06
回答 2查看 833关注 0票数 1

我知道您可以将$(document).ready()代码从html放入单独的文件中,但是作为我的javascript的一部分,我使用了一些回调codeigniter PHP函数,例如site_url(),当它是单独的.js文件的一部分时不起作用。

下面是一个例子:

login_page.php

代码语言:javascript
复制
<script type="text/javascript" src="<?php echo site_url('scripts') . '/' . 'app/login_page.js'; ?>"></script> 
<div id="loginForm" class="prepend-2 column span-21">
    <p class="tips"></p>
    <div class="column span-10">
        <dl>                
            <dt><label>Email:</label></dt>
            <dd><input type="text" name="email" id="email" class="text" /></dd>
        </dl>
    </div>
    <div class="column span-10 last">
        <dl>                
            <dt><label>Password:</label></dt>
            <dd><input type="password" name="password" id="password" class="text" /></dd>
        </dl>
    </div>
    <div class="column prepend-7 span-10 append-5 ">
        <dl>                
            <dt><label>&nbsp</label></dt>
            <dd><input type="submit" value="Login" id="loginButton" /></dd>
        </dl>
    </div>
</div>

login_page.js

代码语言:javascript
复制
$(document).ready( 
function()
{
    //login
    $("#password").keyup(function(event){ if(event.keyCode == 13){          $("#loginButton").click();}}); //submit on enter key
    $('#loginButton').click(function()
    {            
        do_login($("#email"), $("#password"), $(".tips"), "<?php echo site_url('dashboard'); ?>", "<?php echo site_url('login/log_in'); ?>");
        return false;
    });
});

所以这里的问题是在do_login中,我试图调用PHP site_url,但是它显然不会工作。如果我的php中有内联的javascript,这一切都可以正常工作,但这会使文件变得相当大,我更喜欢单独的文件。

我需要知道的是,这是可能的吗?如果是这样,有没有人想出一个优雅的解决方案来解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-03 03:39:26

在包含login_page.js之前,您可以将base_url定义为JS全局变量,或者更好地声明一个JS全局对象,该对象包含稍后在login_page.php中可能需要的所有url。然后它们将在一个单独的容器中,并在声明之后加载的任何JS代码中可用,无论是内联的还是外部的。

代码语言:javascript
复制
<script type="text/javascript">  
    window.URLS  = {
      "BASE_URL" : "<?php echo site_url(....); ?>",
      "LOGIN_URL" : "<?php echo site_url(....); ?>",
      "DASHBOARD_URL" : "<?php echo site_url(....); ?>",
    };
</script>

然后在login_page.js中使用,如下所示

代码语言:javascript
复制
do_login($("#email"), 
         $("#password"), 
          $(".tips"), 
          URLS.DASHBOARD_URL, 
          URLS.LOGIN_URL);
票数 1
EN

Stack Overflow用户

发布于 2012-06-03 03:33:31

最简单的方法是在HTML中定义JS变量- JS文件使用该变量。

代码语言:javascript
复制
<script type="text/javascript">  
    _Base_URL = "<?php echo base_url();?>";
</script>

然后在你的JS中

代码语言:javascript
复制
do_login($("#email"), $("#password"), $(".tips"), (_Base_URL+"dashboard"), (_Base_URL+"login/log_in) ");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10865278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档