0

オートコンプリートの公式の例に従って、これを思いつきました。

$("#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

ここに画像の説明を入力

/searchURL は、サーバー側でこれを生成します。

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)

何か提案はありますか?

4

1 に答える 1

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) {

            },

        });

デモ:エラー デモ:解決策

于 2013-08-10T14:31:46.150 に答える