如果/else语句与使用AJAX结合使用自动完成搜索框



我正在尝试实现一个自动完成搜索框,该搜索框基于在JavaScript中选择的下拉列表ListItem更改其自动完成的文本。但是,使用IF/else语句时,我无法使此自动完成工作。我在下面发布了我的代码:

 <script type="text/javascript"> 
            $("#searchTypeDD").change(function DDChange() {
                var searchType = $('#searchTypeDD').val();
                var searchData = null;
                var searchMethodName = null;
                var searchTerm = $('#searchTermEntered').val();
                if (searchType == 'movieSearch') {
                    data = { name: searchTerm };
                    searchMethodName = "GetmovieTitle";
                }
                else {
                    data = { director: searchTerm };
                    searchMethodName = "Getdirector";
                }
                $("#searchTermEntered").autocomplete({
                    source: function (request, response) {
                        $.ajax({
                            url: "AutoCompleteService.asmx/" + searchMethodName,
                            dataType: "jsonp",
                            data: searchData,
                            success: function (data) {
                                response(data);
                            }
                        });
                    },
                    minLength: 2,
                    select: function (event, ui) {
                        log("Selected: " + ui.item.value + " aka " + ui.item.id);
                    }
                });
            });

如果您正在使用的代码,则有一个错别字。您有$:ajax而不是$.ajax(请参见下文)

$(document).ready(function(){    
    $(".searchTermEntered").autocomplete({
      source: function(request, response) {
          var searchType = $('.searchTypeDD').val();
          var searchData = null;
          var searchMethodName = null;
          var searchTerm = $('.searchTermEntered').val();
          if (searchType == 'movieSearch') {
              searchData = { name: searchTerm };
              searchMethodName = "GetmovieTitle";
          }
          else {
              searchData = { director: searchTerm };
              searchMethodName = "Getdirector";
          }
          $.ajax({
              url: "AutoCompleteService.asmx/" + searchMethodName,
              dataType: "jsonp",
              data: searchData,
              success: function( data ) {
                  response( data );
              }
          });
      },
      minLength: 2,
      select: function(event, ui) {
        log( "Selected: " + ui.item.value + " aka " + ui.item.id );
      }
    });
});

更新:我的代码中有一个错字。它已更新,应该为您服务。唯一的警告是您正在使用.NET,并且当.NET呈现页面时,您的下拉列表的ID不会被搜索。ASP.NET将一堆术语附加到控制ID的末端,以确保其唯一,并提供了其父母控制和SO-ON的地图。因此,我建议您这样做以进行下拉控制:

和您的输入相同:

然后,当我们通过类名($(。xxx)选择器)而不是ID($(#xxx)选择器)选择控件时,上面的代码将起作用。

最新更新