簡體   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