2

ブートストラップ タイプヘッド プラグインを使用しようとしています。

アイデアは次のとおりです。

  1. メーカーオプションあります
  2. モデルのオプションがあります
  3. メーカー オプションを選択すると、モデル オプションが有効になります。
  4. モデル オプションは、メーカーによってフィルター処理されます。

CakePHP コントローラーは、製造元とモデルの両方の「findall」配列を送信しています (命名規則でモデルではなくバラエティと呼んでいます)

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 の 1 行にハードコーディングすると、動作します (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 に答える