Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Select2查询搜索抛出语法错误_Jquery_Backbone.js_Requirejs_Jquery Select2 - Fatal编程技术网

Jquery Select2查询搜索抛出语法错误

Jquery Select2查询搜索抛出语法错误,jquery,backbone.js,requirejs,jquery-select2,Jquery,Backbone.js,Requirejs,Jquery Select2,我正在尝试使用jQuery.select2插件。它是用Backbone.js和RequireJS编写的表单的一部分。我正在编写它的查询/搜索函数,但我遇到了某种无法找到的解析错误 视图的代码为: define([ 'backbone', 'jquery.select2' ], function(Backbone, Select2) { var notificationSelector = Backbone.View.extend({ notificat

我正在尝试使用jQuery.select2插件。它是用Backbone.js和RequireJS编写的表单的一部分。我正在编写它的查询/搜索函数,但我遇到了某种无法找到的解析错误

视图的代码为:

define([
    'backbone',
    'jquery.select2'
],
function(Backbone, Select2) {

    var notificationSelector = Backbone.View.extend({

        notifications: undefined,

        // events:
        // {
        //  // type letter into box EVENT --> filter populated email list 
        // },

        initialize: function(attrs) {
            this.collection.on('add remove reset', this.render(), this);
            /* select2 Event s.t. call "select2ContactsChanged" ? */

        },

        /*
            <><><><><><><><>
            Getting a syntax / parseerror in the AJAX call below?
            What am I missing?
        */

        render: function() {
            /* DEVELOPMENT SETUP */
                // plucking by "caption" will need to be changed...
            if(this.select2Control == undefined) 
            {
                // Do Search() + query here
                // this.select2Control = this.$el.val(this.collection.pluck('caption').join(' ')).select2({
                this.select2Control = this.$el.select2({
                    width: '200px',
                    placeholder: '@email',
                    tags: [],
                    minimumInputLength: 3,

                    query: function() {
                        $.ajax({
                            url: "/notifications/search",
                            dataType: 'json',
                            type: 'GET',
                            //data: {  }, 

                            success: function(data) {
                                /* DEBUG */
                                console.log('AJAX Success!');
                                console.log(data);
                            },

                            error: function(jqXHR, status, error) {
                                    /* DEBUG */
                                console.log('<Failure>');
                                console.log(jqXHR);
                                console.log('-------------------------');
                                console.log(status);
                                console.log('-------------------------');
                                console.log(error);
                            }

                        });
                    }   // END-OF query: function()
                });
            }
            else
            {
                // Go off of what's currently in the Collection and re-render

            }

            // this.$el.select2('data', this.model);
        },

        select2ContactsChanged: function() {
            // when this gets called update this.collection to reflect the this.select2Control's val()

            this.collection.reset(this.select2Control.val().split(' '));
        }

    });

    return notificationSelector;
});
定义([
"骨干",,
'jquery.select2'
],
功能(主干,选择2){
var notificationSelector=Backbone.View.extend({
通知:未定义,
//活动:
// {
////在框中键入字母事件-->过滤器填充的电子邮件列表
// },
初始化:函数(属性){
this.collection.on('add-remove-reset',this.render(),this));
/*选择2事件s.t.呼叫“选择2联系人更改”*/
},
/*
在下面的AJAX调用中获取语法/语法错误?
我错过了什么?
*/
render:function(){
/*开发设置*/
//需要更改“标题”的提取。。。
if(this.select2Control==未定义)
{
//在此处执行搜索()+查询
//this.select2Control=this.$el.val(this.collection.pull('caption')。join('')。选择2({
this.select2Control=此。$el.select2({
宽度:“200px”,
占位符:“@email”,
标签:[],
最小输入长度:3,
查询:函数(){
$.ajax({
url:“/notifications/search”,
数据类型:“json”,
键入:“GET”,
//数据:{},
成功:功能(数据){
/*调试*/
log('AJAX Success!');
控制台日志(数据);
},
错误:函数(jqXHR、状态、错误){
/*调试*/
控制台日志(“”);
console.log(jqXHR);
console.log(“---------------------------”);
控制台日志(状态);
console.log(“---------------------------”);
console.log(错误);
}
});
}//查询结束:函数()
});
}
其他的
{
//关闭集合中当前的内容并重新渲染
}
//this.$el.select2('data',this.model);
},
选择2联系人更改:函数(){
//调用此函数时,请更新this.collection以反映this.select2Control的val()
this.collection.reset(this.select2Control.val().split(“”));
}
});
返回通知选择器;
});
错误回调告诉我有一个parseerror/语法错误(我正在使用Chrome的Web Inspector的网络部分),但我似乎找不到它。 有人能看到我遗漏了什么,或者为什么我可能会犯这样的错误吗


感谢您的时间!

无论何时使用jQuery插件,您都需要使用jQuery。还需要确保您的RequireJS配置正确。插件也作为模块编写时,这是最好的

在您的例子中,您还需要包含来自jQuery的依赖项,而不需要将插件映射到参数,因为它是jQuery插件。您只需使用它。Dependence数组只需确保它将被加载

define([
    'backbone',
    'jquery',
    'jquery.select2'
],
function(Backbone, $) {
    // ...
    $('#element').select2();
});
我最近读了一篇文章,它解释了如何处理jQuery插件


我怀疑您遇到的错误是当jQuery试图解析您发送回来的JSON时。请确保JSON格式有效。您可以使用

验证它。我继续阅读了您的博客文章,并更改了代码,不仅将jQuery定义为带有RequireJS的模块,还将其加载(作为“$”)。不幸的是,我仍然得到相同的无法解释的语法错误。我怀疑错误是在解析返回的JSON时发生的。检查更新的答案。通过AJAX请求返回的JSON,您是指我在错误回调中登录的返回jqXHR对象吗?或者您所指的JSON是与之分离的吗?JSON指的是您需要的响应体正在从服务器发送。