简体   繁体   English

如何将值从PHP传递给JS?

[英]How to pass value from PHP to JS?

After

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

is called script 被称为脚本

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);
});

and I revieved error 我改过错误

ReferenceError: baseUrl is not defined $.post(baseUrl+'Zapiszczas/', {'ile': 1}); ReferenceError:未定义baseUrl $ .post(baseUrl +'Zapiszczas /',{'ile':1});

My question is how to pass baseUrl value to js? 我的问题是如何将baseUrl值传递给js? I'd like to mentioned that baseUrl is defined in config.ini and accessible in php Zend controller. 我想提到baseUrl是在config.ini定义的,并且可以在php Zend控制器中访问。

You have to save that baseURL in some input hidden or in a global var in javascript, when php send the rended page , javascript can't access to php variables, one is executed in server side and the other is exectued in the client side. 您必须将baseURL保存在一些隐藏的输入中,或者保存在javascript的全局变量中,当php发送rending页面时,javascript无法访问php变量,一个在服务器端执行,另一个在客户端执行。

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

And then call in your next javascript script. 然后调用您的下一个JavaScript脚本。

At the very Top of your ViewScript where you added $this->view->headScript() 在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);

}); });

I hope this helps a bit... 我希望这个能有一点帮助...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM