2012-11-06 7 views
0

PHP에서 javascript로 변수를 보내는 데 문제가 있습니다.Codeigniter가 php var를 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이 방법을 사용하여 동적으로 새로 고침 웹 페이지없이 내용을로드하려고 :

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

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

나는 addressValue 설 포닐 완벽하게로드 할 수 있습니다 . 그러나 위의 방법을 시도하면 내 언어가 울리지 않습니다. 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); 

답변

1

첫째, 제안 : 당신이 main.js에서하고있는 것처럼

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

둘째, 당신은 자바 스크립트 파일에 PHP 코드를 사용할 수 없습니다 :

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

하나의 대안은 전에 main.js 호출에 자바 스크립트 변수를 인쇄하는 것입니다 :

<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> 
+0

크고 빠른 답변을 해주셔서 감사합니다! : D – JonnyDevv

+0

당신을 도울 수있어서 기쁩니다! – manix

1

, 당신은 당신의 자바 스크립트 파일에 PHP 태그를 사용하려는? 서버가 .js 요청을 PHP 파일로 전달하도록 설정되어 있지 않으면 PHP가 JavaScript로 제공됩니다.

PHP에서 JavaScript로 값을 가져 오는 가장 쉬운 방법은 페이지의 일부 요소의 속성으로 설정하고 addressValue처럼 해당 값을 선택하는 것입니다. 이 같은 base_url() 사용하기에

+0

설명해 주셔서 감사합니다! : D – JonnyDevv

관련 문제