自动完成文本框,xml源无效

时间:2014-12-06 04:12:23

标签: c# jquery asp.net .net

我有一个返回字符串列表的Web服务。 我正在尝试将其作为我的auto suggesttextbox的数据源。 这是我的webservice返回的内容

   <ArrayOfString>
   <string>Air Pollutants</string>
   <string>Air Facilities</string>
   <string>Air Emissions</string>
   <string>Air Pollution</string>
   <string>Air Quality Monitoring</string>
   <string>Air Piracy</string>
  </ArrayOfString>

这是我用ajax的jquery。

 $(document).ready(function () {
    $('#<%=txt_search_extantdata.ClientID%>').autocomplete({
        source: function (request, response) {
            $.ajax({ type: 'POST',
                url: "/_layouts/Extantlibrarywebservice/getdata.asmx/GetSearchData",
                data: { 'src': $("#<%=txt_search_extantdata.ClientID%>").val() },

                                    dataType: "xml",
                                    success: function (xmlResponse) {
                                        response($(xmlResponse).map(function () {
                                            return { value: $(this).text() };
                                        }))
                                    },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }

            });

        },
        minLength: 2

    });
});

我目前得到的输出是这样的 一个附有所有字符串的单个项目

          Air PollutantsAir FacilitiesAir EmissionsAir Pollution Air Quality MonitoringAir Piracy

我希望在输出中显示的是一行中的一个字符串

       Air Pollutants
       AirFacilities
       Air Emissions
       Air Pollution
       Air Quality Monitoring
       Air Piracy

我无法弄清楚我做错了什么,请帮助...

1 个答案:

答案 0 :(得分:1)

好的想通了,你的成功回调应该是这样的:

  success: function (xmlResponse) {
                        response($("string", xmlResponse).map(function () {
                            return {
                                value: $(this).text()
                            };
                        }));
                    },

因为在这里你得到的响应包含ArrayofStrings中字符串的xml节点 你的选择器映射内部响应应该是这样的

$("string", xmlResponse)
希望有所帮助!!