2016-05-02 6 views
0

は、スクリプト

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 is not defined $.post(baseUrl+'Zapiszczas/', {'ile': 1});

エラーをrevieved私の質問は、JSにbaseUrl値を渡す方法です?されますか私はbaseUrlconfig.iniで定義され、PHPのZendコントローラでアクセス可能であると言いたいと思います。

+1

質問を投稿する前に検索しましたか? http://stackoverflow.com/questions/23740548/how-to-pass-variables-and-data-from-php-to-javascript –

+0

これを使用してください。 var baseUrl = '<?php echo'これと似ています ';?>'; –

+0

PHPのdirectliをjsスクリプトに入れることができません。 – Tomasz

答えて

0

phpがレンダリングされたページを送信し、javascriptがPHP変数にアクセスできず、一方がサーバー側で実行され、もう一方が実行されたときに、JavaScriptの一部の入力またはグローバル変数にbaseURLを保存する必要がありますクライアント側。

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

次に、次のjavascriptスクリプトを呼び出してください。追加したあなたのViewScriptの最上部に

0

の$ this - >表示 - > 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); 

});

私はこれが少し助けてくれることを願っています...

関連する問題