Codeigniter将php var发送到javascript和.load内容时遇到麻烦

时间:2012-11-06 14:26:41

标签: javascript ajax codeigniter

我遇到麻烦从php发送变量到javascript。

我通过此链接提取javascript(Ajax)。

<script src="<?php echo base_url().'assets/js/main.js' ?>"></script>

在我的main.js

var base_url = '<?php echo base_url(); ?>';
var language = '<?php echo $language; ?>';

我试图在没有刷新网页的情况下动态加载内容,方法是使用ajax .load

var addressValue = $(this).children('a').attr("href");

$('#conteudo').fadeOut("slow").load(addressValue+'/index.php?idioma='+language+' #conteudo').hide().fadeIn("slow")

我可以使用addressValue onyl完美加载。 但是,当我尝试上述方式时,我的语言不会回响。 如果不是使用language而是使用我想要的语言而不使用变量,例如葡萄牙语就像一个魅力。 我正在使用多语言,所以我需要用用户选择的语言来提取内容。

这是用户可以设置语言的方式

<ul class="nav pull-right language" id="barra_de_idiomas">
    <li><?php echo anchor(($this->uri->uri_string())."?idioma=english",'&nbsp;', 'class="language" id="en"') ?></li>
    <li><?php echo anchor(($this->uri->uri_string())."?idioma=portuguese",'&nbsp;', 'class="language" id="pt"') ?></li>
    <li><?php echo anchor(($this->uri->uri_string())."?idioma=german",'&nbsp;', 'class="language" id="de"') ?></li>
    <li><?php echo anchor(($this->uri->uri_string())."?idioma=french",'&nbsp;', 'class="language" id="fr"') ?></li>
</ul>

我的控制器构造:

    $this->load->library('user_agent');
    if ($this->config->item('language') == '') {
        if($this->input->get('idioma') == true) {
            $this->config->set_item('language', $this->input->get('idioma'));
        } elseif ($this->agent->accept_lang('en')) {
            $this->config->set_item('language', 'english');
        } elseif ($this->agent->accept_lang('de')) {
            $this->config->set_item('language', 'german');
        } elseif ($this->agent->accept_lang('pt')) {
            $this->config->set_item('language', 'portuguese');
        } else {
            $this->config->set_item('language', 'portuguese');
        }
    }
    $language = $this->config->item('language');
    $data['language'] = $language;
    $this->load->vars($data);

2 个答案:

答案 0 :(得分:1)

那么,您是否尝试在JavaScript文件中使用PHP标记?除非您的服务器设置为首先将.js请求传递给PHP文件,然后将PHP作为JavaScript传递,否则这将无效。

将这些值从PHP传递到JavaScript的最简单方法是将它们设置为页面上某个元素的属性,并像addressValue一样选择它们。

答案 1 :(得分:1)

首先,我建议您使用base_url()之类的:

<script src="<?php echo base_url('assets/js/main.js') ?>"></script>

其次,你不能像在main.js那样在javascript文件中使用php代码:

var base_url = '<?php echo base_url(); ?>';
var language = '<?php echo $language; ?>';

另一种方法是在main.js调用之前打印javascript变量:

<script type="text/javascript">
    var base_url = '<?php echo base_url(); ?>';
    var language = '<?php echo $language; ?>';
</script>

<script src="<?php echo base_url('assets/js/main.js') ?>"></script>