2014-02-15 207 views
0

我知道這是一個常見問題,但我的情況有所不同。下面是我的代碼在JavaScript函數中傳遞PHP變量

PHP

if($mode == "All" || $mode == 'Offline') 
     { 
       echo "<label>By categories :</label>"; 
       echo elgg_view('input/pulldown',array(
         'options' => $options_values, 
         'internalname' => 'event_type', 
         'value' => get_input('event_type'), 
         'js' => 'onchange = set_filter('. $mode .')','internalid' => 'event_cat' 

       )); 
     } 

在同一個文件中我寫劇本

的Java腳本

function set_filter(mode){ 

    var url = $('#event_cat option:selected').val(); 
    alert(mode);  
    if (mode == "Offline"){ 
    var off_url = <?php $vars['url'] ?>"pg/event_calendar/filter/?&amp;callback=true&event_type={url}&mode=offline"; 
    alert(off_url); 
    } 

} 

我現在面臨的問題是我想通過「 $ mode「變量」'js'=>'onchange = set_filter('。$ mode。')'「函數作爲參數。但它表示在腳本中未定義爲alert。如何傳遞變量?

回答

0

您需要echo你的PHP變量:

var off_url = "<?php echo $vars['url']; ?>pg/event etc..."; 

由於是,你的代碼是一個簡單的版本不同的

<?php 
true; 

它什麼都不做,除了吸了一點的CPU時間在所有。

同樣,當EXTREMELY將數據從PHP直接轉儲到JavaScript上下文時要小心。如果輸出數據中有任何javascript元字符,則可能會導致語法錯誤。一般而言,您應該始終使用PHP正在輸出的任何內容,但這也取決於您如何將PHP數據插入到JS代碼塊中。

+0

我想通過變量$模式在PHP中的條件。查看onchange功能。我需要傳遞變量作爲參數。 –

+0

你必須記住你正在生成JavaScript代碼。無論什麼PHP輸出在JS引擎遇到它時都必須有效。 ''some_js_func(<?php echo'foo'?>)'會生成'some_js_func(foo)'...除非在該範圍內有一個名爲'foo'的變量,否則這個代碼將會失敗並顯示未定義的變量。 'some_js_func('<?php echo'foo'?>');'(注意額外的'''引號......)會起作用:'some_js_func('foo')'。 –

0

嘗試像

var off_url = "<?php $vars['url'] ?>pg/event_calendar/filter/?&amp;callback=true&event_type={url}&mode=offline"; 

而在你的js通會像

'js' => 'onchange = set_filter("'. $mode .'")' 
+0

我想在php中傳遞變量$ mode。查看onchange功能。我需要傳遞變量作爲參數。 –

0

試試這個

'js' => 'onchange = set_filter("'. $mode .'")' 
+0

沒有朋友我試過這樣但不工作.. –

+0

你檢查傳遞給set_filter的參數的值,當它調用使用螢火蟲? –

+0

是沒有工作的朋友。我檢查了它.. –