2012-06-07 51 views
2

我正在嘗試使用bootstrap typehead插件。如果php內部爲javascript

的理念是:

  1. 我有一個製造商選擇
  2. 我有一個模型選項
  3. 只有當製造商選項被選中,模型選項啓用。
  4. 模型選項由製造商過濾。

CakePHP的控制器是給我製造商和型號(這就是我稱之爲品種,而不是模型的命名約定)

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); 
     } 
    }); 

我遇到的問題的「的findall」陣列是我嘗試做

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/

謝謝!

+2

如果您嘗試查看已經生成的結果,該怎麼辦?你有js錯誤 - 所以請給我們你的javascript代碼,不用php – zerkms

+0

這裏是我的因爲我有它http://jsfiddle.net/mmoscosa/Y6hEA/這是更好嗎?!可能我讓自己變得複雜了很多 – mmoscosa

+0

沒有理由,順便說一句,你正在解析你的代碼。例如,這個結構:'?>「<?php echo'所有你在那裏做的是關閉你的php,然後添加一個報價,然後打開你的php然後回顯,所有這些都可以被忽略掉 –

回答

5

您的JavaScript變量恰好在<?php ?>標籤之間。如果聲明中您不能在您的中使用javascript製造商變量。 PHP是服務器端,JavaScript是客戶端。

+0

你的整個答案是奇怪的 – zerkms

+0

對不起格式化發生了一些事情。 – robonerd