如何将值从PHP传递到JS


How to pass value from PHP to JS?

之后

$this->view->headScript()->appendFile($this->_request->getBaseUrl() . '/public/scripts/czassesji.js', 'text/javascript');

称为脚本

jQuery(document).ready(function() {
  var licznik = 0;
  var aktywny = true;
  window.onblur = function(){aktywny = false;};
  window.onfocus = function(){aktywny = true; licznik = 0;};
  var id = setInterval(function(){wyslijImpuls()},60000);
  function wyslijImpuls() {
    if(aktywny == false) {
      licznik++;  //żeby nie tracić czasu spędzonego na stronie (np: 30 sekund), gdy uzytkownik przelączy okno/zakładkę przeglądarki
    }
    if(licznik < 2) {
      $.post(baseUrl+'Zapiszczas/', {'ile': 1});
    }
  }
  $.post(baseUrl+'Zapiszczas/', {'ile': 1});
  console.log(baseUrl);
});

我查看了错误

ReferenceError:未定义baseUrl$.post(baseUrl+'Zapiszzas/',{‘ile’:1});

我的问题是如何将baseUrl值传递给js?我想提到的是,baseUrl是在config.ini中定义的,并且可以在php Zend控制器中访问。

您必须将该baseURL保存在javascript中的某个隐藏输入或全局变量中,当php发送rended页面时,javascript无法访问php变量,一个在服务器端执行,另一个在客户端执行。

<script>
baseURL = this->view->headScript()->appendFile($this->_request->getBaseUrl() . '/public/scripts/czassesji.js', 'text/javascript');
</scrip>

然后调用下一个javascript脚本。

在ViewScript的顶部添加$this->view->headScript()

//VIEW FILE 
<?php
    $this->view->headScript()->appendFile($this->_request->getBaseUrl() . '/public/scripts/czassesji.js', 'text/javascript');
    //TRY ADDING THIS:
    $this->inlineScript()->captureStart();
        echo "var baseURL = '" . $baseUrl . "';";
    $this->inlineScript()->captureEnd();
    //.... MORE CODES...
?>
  <?php 
   // IN YOUR CONTROLLER: SINCE YOU HAVE ACCESS TO THE $baseUrl VARIABLE HERE
   // TRY THIS IN THE APPROPRIATE ACTION:
    public function showAction(){
        //...HANDLE YOUR BUSINESS LOGIC 
        $arrViewModel               = array();
        $arrViewModel['baseUrl']    = $pointerToBaseURL;
        $viewModel                  = new ViewModel($arrViewModel);
        //IF $viewModel ALREADY EXIST BEFORE THIS POINT:
        // YOU MAY JUST ADD THE baseUrl KEY LIKE SO 
        // $viewModel->setVariable('baseUrl',  '$pointerToBaseURL');           
        return $viewModel;
    }
    ?>
// IN YOUR JQUERY... $baseUrl SHOULD NOW BE AVAILABLE 
// SINCE IT IS NOW GLOBALLY SCOPED FROM YOUR VIEW:
jQuery(document).ready(function() {
var licznik = 0;
var aktywny = true;
window.onblur = function(){aktywny = false;};
window.onfocus = function(){aktywny = true; licznik = 0;};
var id = setInterval(function(){wyslijImpuls()},60000);
function wyslijImpuls() {
    if(aktywny == false) {
        licznik++;  //żeby nie tracić czasu spędzonego na stronie (np: 30 sekund), gdy uzytkownik przelączy okno/zakładkę przeglądarki
    }
    if(licznik < 2) {
        $.post(baseUrl+'Zapiszczas/', {'ile': 1});
    }
}
$.post(baseUrl+'Zapiszczas/', {'ile': 1});
    console.log(baseUrl);

});

我希望这能有所帮助。。。