2

我正在尝试使用 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);
        }
    });

我遇到的问题是我尝试做的地方

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

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

知道为什么当我将 php 字符串与 javascript 变量连接起来时它不起作用吗?!

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

谢谢!

4

1 回答 1

5

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

于 2012-06-07T22:43:06.677 回答