2014-02-15 2 views
0

Я знаю, что это частый вопрос, но мой случай отличается. Вот мой кодПередайте переменную PHP в функции JavaScript

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 Script

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. ')' " Функция в качестве аргумента. Но это говорит о неопределенности как предупреждение в скрипте. Как передать переменную?

ответ

0

Вы должны echo переменную PHP:

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

Как есть, ваш код является просто другая версия

<?php 
true; 

, который не делает вообще ничего, кроме сосать немного времени центрального процессора ,

Кроме того, be EXTREMELY осторожно, когда непосредственно сбрасывает данные с PHP в контекст javascript. Если у вас есть любые метасимволы javascript в выходных данных, вы рискуете ввести синтаксическую ошибку. В общем, вы всегда должны json_encode() все, что выводит PHP, но это также зависит от того, как вы вставляете данные PHP в кодовый блок JS.

+0

Я хочу передать режим переменной $ в PHP в состоянии. См. Функцию onchange. Мне нужно передать переменную в качестве аргумента. –

+0

Вы должны помнить, что вы создаете код javascript. Независимо от того, какие выходы PHP должны быть действительными, когда движок JS сталкивается с ним. 'some_js_func ()' собирается генерировать 'some_js_func (foo)' ... если у вас нет переменной с именем 'foo' в этой области, этот код не будет работать с неопределенной переменной. 'some_js_func ('');' (обратите внимание, что дополнительные '' 'quotes ...) будут работать:' 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

Я хочу передать переменную $ mode в php в состоянии. См. Функцию onchange. Мне нужно передать переменную в качестве аргумента. –

0

Попробуйте

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

NO buddy Я пробовал вот так, но не работал. –

+0

Вы проверили значение параметра, переданного set_filter, когда его вызывали с помощью firebug? –

+0

да приятель, который не работает. Я проверил его. –

Смежные вопросы