未捕获的TypeError:无法读取未定义的属性“getJSON”

时间:2017-05-15 17:01:53

标签: jquery ajax wordpress backbone.js backbone-views

我正在定制一个wordpress主题,为什么我在尝试输入搜索框的输入字段时出现此错误,我的HTML代码是

<div class="mysearchdiv">
<input type="" name="" class="mysearch">
<ul class="skills-list" id="skills_list"></ul>
</div>

和backbone.js代码是

jQuery(document).ready(function(){
    var mymodel= Backbone.Model.extend({
        defaults:function(){
            return{
            name:''
            }
        }
    });

    var mycollection=Backbone.Collection.extend({
        model:mymodel
    });
    var mynewcollection= new mycollection();
    var myview=Backbone.View.extend({
        model:mynewcollection,
        el:'.mysearchdiv',
        events:{
            'keypress .mysearch':'search'
        },
        initialize:function(){
            console.log("init");
            var view=this;
            this.skill_list=this.$('ul.skill-list');
            view.skills={};
            this.$el.find('input.mysearch').typeahead({
                minLength:0,
                items:10,
                source: function(query, process) {
                    console.log("Skill_Control typeahead source");
                    console.log(query);
                    console.log(process);
                    console.log(ae_globals.ajaxURL);
                    if (view.skills.length > 0) return view.skills;
//getting error at this point
//where ae_globals.ajaxURL is ajax url in wp
                    return $.getJSON(ae_globals.ajaxURL, {
                        action: 'fre_get_user_skills',
                        query: query
                    }, function(data) {

                        view.skills = data;
                        return process(data);
                    }
                    );
                },
                updater:function(item){
                    console.log("updater");
                }
            });

        },

        search:function(){
            console.log("search");
        }

    });
    new myview;
    console.log("starting");
});

同样类型的代码在我的其他主题中起作用,但现在我完全陷入困境。任何帮助将是欣赏。提前致谢。

1 个答案:

答案 0 :(得分:2)

这是WordPress环境的常见问题。 $不在全球范围内。要么:

jQuery(document).ready(function ($) {

或使用:

jQuery.getJSON(...