小编mmo*_*osa的帖子

twitter bootstrap typeahead(未定义的方法'toLowerCase')

我正在尝试使用twitter bootstrap从我的数据库中获取制造商.

因为twitter bootstrap typeahead不支持ajax调用我使用这个fork:

https://gist.github.com/1866577

在该页面中,有一条评论提到了如何做我想做的事情.问题是当我运行我的代码时,我继续得到:

未捕获的TypeError:无法调用未定义的方法'toLowerCase'

我谷歌搜索并试图改变我的jquery文件使用缩小和非缩小以及谷歌代码上托管的文件,我一直得到相同的错误.

我的代码目前如下:

$('#manufacturer').typeahead({
    source: function(typeahead, query){
        $.ajax({
            url: window.location.origin+"/bows/get_manufacturers.json",
            type: "POST",
            data: "",
            dataType: "JSON",
            async: false,
            success: function(results){
                var manufacturers = new Array;
                $.map(results.data.manufacturers, function(data, item){
                    var group;
                    group = {
                        manufacturer_id: data.Manufacturer.id,
                        manufacturer: data.Manufacturer.manufacturer
                    };
                    manufacturers.push(group);
                });
                typeahead.process(manufacturers);
            }
        });
    },
    property: 'name',
    items:11,
    onselect: function (obj) {

    }
});
Run Code Online (Sandbox Code Playgroud)

在url字段我添加了

window.location.origin

避免任何已经在另一个问题上讨论的问题

在我使用之前$.each(),然后决定$.map()类似的问题中使用推荐的Tomislav Markovski

任何人都知道我为什么一直遇到这个问题?!

谢谢

javascript json typeahead twitter-bootstrap typeahead.js

22
推荐指数
3
解决办法
2万
查看次数

php如果在javascript里面

我正在尝试使用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/

谢谢!

javascript php jquery cakephp typeahead

2
推荐指数
1
解决办法
1355
查看次数