php如果在javascript里面

mmo*_*osa 2 javascript php jquery cakephp typeahead

我正在尝试使用bootstrap typehead插件.

这个想法是:

  1. 我有制造商选项
  2. 我有一个模型选项
  3. 只有选择了"制造商"选项后,才会启用模型选项.
  4. 模型选项由制造商过滤.

CakePHP控制器发送给我一个制造商和模型的'findall'数组(我称之为Variety而不是Model,用于命名约定)

model_source = [];
$('#manufacturer').typeahead({
        source: [
            <?php
                foreach($manufacturers as $manufacturer):
                    if($manufacturer['Manufacturer']['bow'] == true):
            ?>
                "<?php echo $manufacturer['Manufacturer']['manufacturer']; ?>",
            <?php
                    endif;
                endforeach;
            ?>
        ]
    });
    $('#manufacturer').live("change", function(){
        if($(this).val()){
            $('#model').attr('disabled', false);
            manufacturer = $(this).val();
            <?php
                foreach($varieties as $model):
                    if($model['Variety']['bow'] == true):
            ?>
                model_source.push("<?php if($model['Variety']['manufacturer_id'] == "+manufacturer+"){echo $model['Variety']['model'];}else{ continue; } ?>");
            <?php
                    endif;
                endforeach;
            ?>
        }else{
            $('#model').attr('disabled', true);
        }
    });
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我尝试做的事情

    model_source.push("<?php if($model['Variety']['manufacturer_id'] == "+manufacturer+"){echo $model['Variety']['model'];}else{ continue; } ?>");
Run Code Online (Sandbox Code Playgroud)

如果我将制造商变量硬编码为PHP的一行,那么它可以工作(没有else语句,这也给我带来问题,我在控制台上出现了ILEGAL错误)

任何想法,为什么当我连接php字符串与javascript变量,然后它不起作用?!

http://jsfiddle.net/mmoscosa/Y6hEA/

谢谢!

rob*_*erd 5

你的javascript变量恰好在<?php ?>标签之间.您不能在if语句中使用javascript制造商变量.PHP是服务器端,JavaScript是客户端.