Я знаю, что это частый вопрос, но мое дело другое. Вот мой код
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/?&callback=true&event_type={url}&mode=offline";
alert(off_url);
}
}
Проблема, с которой я столкнулся, - это передать переменную "$ mode" в функцию "'js' => 'onchange = set_filter ('. $ Mode. ')'" В качестве аргумента. Но это говорит о неопределенности как предупреждение в скрипте. Как передать переменную?
Попробуй это
'js' => 'onchange = set_filter("'. $mode .'")'
Вам нужно echo
вашу переменную php:
var off_url = "<?php echo $vars['url']; ?>pg/event etc...";
Как и ваш код - это просто другая версия
<?php
true;
который ничего не делает, кроме как втянуть немного времени процессора.
Кроме того, будьте ЧРЕЗВЫЧАЙНЫ осторожны при прямом демпинге данных из PHP в контекст javascript. Если у вас есть любые метасимволы javascript в выходных данных, вы рискуете ввести синтаксическую ошибку. В общем, вы всегда должны использовать json_encode()
все, что json_encode()
PHP, но это также зависит от того, как вы вставляете данные PHP в блок кода JS.
some_js_func(<?php echo 'foo' ?>)
собирается сгенерировать some_js_func(foo)
... если в этой области нет переменной с именем foo
, этот код завершится ошибкой с неопределенной переменной. some_js_func('<?php echo 'foo' ?>');
(обратите внимание на дополнительные '
кавычки ...) будет работать: some_js_func('foo')
.
Попробуйте
var off_url = "<?php $vars['url'] ?>pg/event_calendar/filter/?&callback=true&event_type={url}&mode=offline";
И в вашем js pass будет как
'js' => 'onchange = set_filter("'. $mode .'")'