Jquery ui JQueryAutoComplete不显示结果

Jquery ui JQueryAutoComplete不显示结果,jquery-ui,autocomplete,jquery-ui-autocomplete,Jquery Ui,Autocomplete,Jquery Ui Autocomplete,我正在尝试绑定文本框和JQuery自动完成功能。当我检查Firebug AJAX请求和响应时,它返回如下所示。但是文本框没有显示任何项目。你能告诉我,我做错了什么吗?谢谢 这是我的代码: $("#<%= TextBox1.ClientID %>").autocomplete({ source: function (request, response) { $.ajax({ url: "/

我正在尝试绑定文本框和JQuery自动完成功能。当我检查Firebug AJAX请求和响应时,它返回如下所示。但是文本框没有显示任何项目。你能告诉我,我做错了什么吗?谢谢

这是我的代码:

$("#<%= TextBox1.ClientID %>").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/contractors/web_services/wsSM.asmx/SearchDrugs",
                    type: "POST",
                    dataType: "json",
                    data: {
                        'LocationID': "10543",
                        'Search': request.term
                    },
                    success: function (data) {                        
                        response($.map(data.d, function (item) {

                            return {
                                value: item.FullDrugName,
                                id: item.DrugID
                            }
                        }))
                    }
                });
            },
            delay: 1,
            minLength: 2,
            select: function (event, ui) {
                alert(ui.item.id);
            }
        });

DataType属性表示期望从服务器返回的数据类型。
您将数据类型定义为json,但服务器返回xml输出。您应该将DataType属性更改为xml,DataType属性表示您希望从服务器返回的数据类型。 您将数据类型定义为json,但服务器返回xml输出。您应该将数据类型属性更改为xml

此外,还需要更改处理xml响应的方式。看起来返回数据上没有d属性,还需要在XML结构中查找正确的节点并提取它们的文本以构建返回到小部件的响应数组

根据您提供的XML,它可能看起来像这样:

$("#<%= TextBox1.ClientID %>").autocomplete({
    source: function (request, response) {
        $.ajax({
            url: "/contractors/web_services/wsSM.asmx/SearchDrugs",
            type: "POST",
            dataType: "json",
            data: {
                'LocationID': "10543",
                'Search': request.term
            },
            success: function (data) {                        
                response($(data).find("Drug").map(function (_, el) {
                    var $el = $(el);
                    return {
                        label: $el.find("FullDrugName").text(),
                        value: $el.find("DrugID").text()
                    };
            }));
        });
    },
    delay: 1,
    minLength: 2,
    select: function (event, ui) {
        alert(ui.item.id);
    }
});
下面是一个只使用XML字符串而不使用AJAX请求的示例:

此外,您还需要更改处理XML响应的方式。看起来返回数据上没有d属性,还需要在XML结构中查找正确的节点并提取它们的文本以构建返回到小部件的响应数组

根据您提供的XML,它可能看起来像这样:

$("#<%= TextBox1.ClientID %>").autocomplete({
    source: function (request, response) {
        $.ajax({
            url: "/contractors/web_services/wsSM.asmx/SearchDrugs",
            type: "POST",
            dataType: "json",
            data: {
                'LocationID': "10543",
                'Search': request.term
            },
            success: function (data) {                        
                response($(data).find("Drug").map(function (_, el) {
                    var $el = $(el);
                    return {
                        label: $el.find("FullDrugName").text(),
                        value: $el.find("DrugID").text()
                    };
            }));
        });
    },
    delay: 1,
    minLength: 2,
    select: function (event, ui) {
        alert(ui.item.id);
    }
});
下面是一个仅使用XML字符串而不使用AJAX请求的示例: