0

我无法将变量从 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; ?>';

我试图通过.load这种方式使用ajax动态加载内容而不刷新网页:

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

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

我可以用addressValueonyl 完美加载。但是当我尝试上述方式时,我的语言不会回声。如果我不使用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);
4

2 回答 2

1

那么,您想在 JavaScript 文件中使用 PHP 标记吗?.js除非您的服务器设置为首先将请求传递给 PHP 文件,然后将 PHP 作为 JavaScript 交付,否则这将不起作用。

将这些值从 PHP 获取到 JavaScript 的最简单方法是将它们设置为页面上某些元素的属性,然后像使用addressValue.

于 2012-11-06T14:38:31.880 回答
1

首先,我建议你使用base_url()like:

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

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

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>
于 2012-11-06T14:39:43.290 回答