1

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

这是一个例子:

登录页面.php

<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

$(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;
    });
});

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

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

4

2 回答 2

1

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

<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像这样使用它

do_login($("#email"), 
         $("#password"), 
          $(".tips"), 
          URLS.DASHBOARD_URL, 
          URLS.LOGIN_URL);
于 2012-06-02T19:39:26.453 回答
0

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

<script type="text/javascript">  
    _Base_URL = "<?php echo base_url();?>";
</script>

然后在你的 JS

do_login($("#email"), $("#password"), $(".tips"), (_Base_URL+"dashboard"), (_Base_URL+"login/log_in) ");
于 2012-06-02T19:33:31.370 回答