2014-02-15 253 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

是没有工作的朋友。我检查了它.. –