简体   繁体   中英

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

My question is how to pass baseUrl value to js? I'd like to mentioned that baseUrl is defined in config.ini and accessible in php Zend controller.

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.

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

And then call in your next javascript script.

At the very Top of your ViewScript where you added $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...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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