繁体   English   中英

如何将值从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 +'Zapiszczas /',{'ile':1});

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

您必须将baseURL保存在一些隐藏的输入中,或者保存在javascript的全局变量中,当php发送rending页面时,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);

});

我希望这个能有一点帮助...

暂无
暂无

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

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