1

$(document).ready()コードをhtmlとは別のファイルに入れることができることを理解していますが、JavaScriptの一部として、site_url()などのcodeigniterPHP関数への呼び出しを使用しています。別の.jsファイルの。

次に例を示します。

login_page.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 グローバル変数として定義するかlogin_page.phplogin_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

最も簡単な方法は、JS ファイルで使用される HTML で 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 に答える