【问题标题】:jquery autocomplete throws --> "parsererror", SyntaxError: invalid labeljquery 自动完成抛出 --> "parsererror", SyntaxError: invalid label
【发布时间】:2013-08-10 14:13:46
【问题描述】:

按照official example 进行自动完成,我想出了这个。

$("#search").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/search",
                    dataType: "jsonp",
                    data: {
                        featureClass: "P",
                        style: "full",
                        maxRows: 12,
                        name_startsWith: request.term
                    },
                    success: function (data) {
                        response($.map(data.username, function (item) {
                            return {
                                label: item.name,
                                value: item.name
                            };
                        }));
                    },
                    error: function (data) {

                    }
                });
            },
            minLength: 2,
            select: function (event, ui) {

            },

        });

但是我从来没有点击过success: function (data) { .. },但总是点击error: function (data) {

Firebug 显示错误:"parsererror", SyntaxError: invalid label

/search url 在服务器端生成:

def search():
    data = None
    if 'name_startsWith' in request.args:
        q = request.args['name_startsWith']
        data = User.query(ndb.AND(User.firstname >= q, User.firstname <= q + u'\ufffd')).fetch(12)
        js = []
        for user in data:
            js.append({'name' : user.fullname()})         
    return jsonify(username=js)

有什么建议吗?

【问题讨论】:

  • 我怀疑用户名包含一些无效字符,例如 ".. 你能分享那里的字符集吗
  • 当然。 {"username": [{"name": "Kave Kory"}]} 我没有看到任何东西
  • 你的数据类型是jsonp,但它是json响应,把数据类型改成'json'

标签: jquery json flask jquery-ui-autocomplete


【解决方案1】:

将数据类型更改为json,因为您的响应是一个json对象,并且请求被发送到同一个域,所以不需要jsonp

$("#search").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/search",
                    dataType: "json",
                    data: {
                        featureClass: "P",
                        style: "full",
                        maxRows: 12,
                        name_startsWith: request.term
                    },
                    success: function (data) {
                        response($.map(data.username, function (item) {
                            return {
                                label: item.name,
                                value: item.name
                            };
                        }));
                    },
                    error: function (data) {

                    }
                });
            },
            minLength: 2,
            select: function (event, ui) {

            },

        });

演示:Error 演示:Solution

【讨论】:

  • +1 非常感谢。有用。但是在您的回答中,您又有jsdonp ;-)
猜你喜欢
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
相关资源
最近更新 更多