jquery在响应时出错或自动完成在哪里?

jquery在响应时出错或自动完成在哪里?,jquery,xml,autocomplete,Jquery,Xml,Autocomplete,背景信息首先:应用程序是一个旧的.net framework 1.1应用程序(当时不支持json,所以我必须使用xml。我无法升级这个特定的应用程序,原因不值得一提 我正在尝试将“自动完成”添加到我网站的文本框中。但在键入某些单词后,“自动完成”会弹出。例如,在文本框中,如果我开始键入,则会弹出“自动完成”。一旦我按空格键并再次开始键入,则“自动完成”会再次弹出 我发现了一些很酷的东西,jquery文档包含了一些与这里发现的完全相同的东西:我已经做了他们正在做的事情,但是我的自动完成功能没有出

背景信息首先:应用程序是一个旧的.net framework 1.1应用程序(当时不支持json,所以我必须使用xml。我无法升级这个特定的应用程序,原因不值得一提


我正在尝试将“自动完成”添加到我网站的文本框中。但在键入某些单词后,“自动完成”会弹出。例如,在文本框中,如果我开始键入,则会弹出“自动完成”。一旦我按空格键并再次开始键入,则“自动完成”会再次弹出

我发现了一些很酷的东西,jquery文档包含了一些与这里发现的完全相同的东西:我已经做了他们正在做的事情,但是我的自动完成功能没有出现。这是我的jquery代码:

我的jquery代码
迄今为止的调查结果 我非常接近这里,我看到的是如果我从jquery和web服务中删除参数,即:

  //parameters for the ajax call.
        //var FacilityID = $("#ddlFacility").val();
        //var ClientID = $("#ddlClient").val(); 
        //var params = '{"ClientID":"' + ClientID + '", "FacilityID":"' + FacilityID + '"}';
自动完成正确显示。但是我需要这些参数…因此,当我将它们添加回我的jquery和我的web服务(我的asmx文件)时,chrome会抛出一个内部服务器500错误。它说:

System.InvalidOperationException: Request format is invalid: text/xml; charset=utf-8. at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() at System.Web.Services.Protocols.WebServiceHandler.Invoke() at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest() 
但是我需要text/xml类型,因为.net 1.1不支持json。有人喜欢吗?

我知道了

function split(val) 
    {
      //return val.split(/\s*/);
      return val.split(" ");
    }

    function extractLast(term) 
    {
      return split(term).pop();
    }

        //parameters for the ajax call.
        var FacilityID = $("#ddlFacility").val();
        var ClientID = $("#ddlClient").val();   
        var params = '{"ClientID":"' + ClientID + '", "FacilityID":"' + FacilityID + '"}';

$("#txtTags").bind( "keydown", function( event ) {  
    // don't navigate away from the field on tab when selecting an item.
        if ( event.keyCode === $.ui.keyCode.TAB &&
            $( this ).data( "ui-autocomplete" ).menu.active ) {
          event.preventDefault();
        }
      }).
    autocomplete({
        minLength: 1,
        source: function(request, response) {
            $.ajax({
                type: "GET",
                data: "ClientID=" + ClientID + "&FacilityID=" + FacilityID,
                url: "GetTags.asmx/GetTags",
                dataType: "xml",
                contentType: "text/xml; charset=utf-8",
          success: function(xml) {
                var data = [];
                 $(xml).find('string').each(function(){ 
                    data.push($(this).text());
                    });
                //response(data);
                // delegate back to autocomplete, but extract the last term
                response( $.ui.autocomplete.filter(
                        data, extractLast(request.term)));
          },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });
        }, 
        search: function() {
          // custom minLength
          var term = extractLast( this.value );
          if(typeof(term) !== 'undefined')
            {           
            if (term.length < 1) {
                return false;
            }
          }
        }, 
        focus: function() {
          // prevent value inserted on focus
          return false;
        },
        select: function( event, ui ) 
        {       
            var terms = split(this.value);          
            // remove the current input          
            terms.pop();          
            // add the selected item          
            terms.push(ui.item.value);          
            // add placeholder to get the comma-and-space at the end          
            terms.push("");          
            //add space to each term object
            this.value = terms.join(" ");          
            return false;        
        },
    });
函数拆分(val)
{
//返回val.split(/\s*/);
返回值拆分(“”);
}
功能提取最后(学期)
{
返回拆分(term.pop();
}
//ajax调用的参数。
var FacilityID=$(“#ddlFacility”).val();
var ClientID=$(“#ddlClient”).val();
变量参数=“{”ClientID:“+ClientID+”,“FacilityID:“+FacilityID+”}”;
$(“#txtTags”).bind(“keydown”,函数(事件){
//选择项目时,不要离开选项卡上的字段。
如果(event.keyCode===$.ui.keyCode.TAB&&
$(此).data(“ui自动完成”).menu.active){
event.preventDefault();
}
}).
自动完成({
最小长度:1,
来源:功能(请求、响应){
$.ajax({
键入:“获取”,
数据:“ClientID=“+ClientID+”&FacilityID=“+FacilityID,
url:“GetTags.asmx/GetTags”,
数据类型:“xml”,
contentType:“text/xml;charset=utf-8”,
成功:函数(xml){
var数据=[];
$(xml).find('string').each(function(){
data.push($(this.text());
});
//答复(数据);
//委托回自动完成,但提取最后一项
响应($.ui.autocomplete.filter(
数据,最后提取(请求期限));
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
警报(文本状态);
}
});
}, 
搜索:函数(){
//自定义最小长度
var项=提取时间(此值);
如果(术语类型)!=‘未定义’)
{           
如果(术语长度<1){
返回false;
}
}
}, 
焦点:函数(){
//防止在焦点上插入值
返回false;
},
选择:功能(事件、用户界面)
{       
var术语=分割(该值);
//删除当前输入
terms.pop();
//添加所选项目
术语推送(ui.item.value);
//添加占位符以在末尾获得逗号和空格
术语。推送(“”);
//为每个术语对象添加空间
this.value=terms.join(“”);
返回false;
},
});
我明白了

function split(val) 
    {
      //return val.split(/\s*/);
      return val.split(" ");
    }

    function extractLast(term) 
    {
      return split(term).pop();
    }

        //parameters for the ajax call.
        var FacilityID = $("#ddlFacility").val();
        var ClientID = $("#ddlClient").val();   
        var params = '{"ClientID":"' + ClientID + '", "FacilityID":"' + FacilityID + '"}';

$("#txtTags").bind( "keydown", function( event ) {  
    // don't navigate away from the field on tab when selecting an item.
        if ( event.keyCode === $.ui.keyCode.TAB &&
            $( this ).data( "ui-autocomplete" ).menu.active ) {
          event.preventDefault();
        }
      }).
    autocomplete({
        minLength: 1,
        source: function(request, response) {
            $.ajax({
                type: "GET",
                data: "ClientID=" + ClientID + "&FacilityID=" + FacilityID,
                url: "GetTags.asmx/GetTags",
                dataType: "xml",
                contentType: "text/xml; charset=utf-8",
          success: function(xml) {
                var data = [];
                 $(xml).find('string').each(function(){ 
                    data.push($(this).text());
                    });
                //response(data);
                // delegate back to autocomplete, but extract the last term
                response( $.ui.autocomplete.filter(
                        data, extractLast(request.term)));
          },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });
        }, 
        search: function() {
          // custom minLength
          var term = extractLast( this.value );
          if(typeof(term) !== 'undefined')
            {           
            if (term.length < 1) {
                return false;
            }
          }
        }, 
        focus: function() {
          // prevent value inserted on focus
          return false;
        },
        select: function( event, ui ) 
        {       
            var terms = split(this.value);          
            // remove the current input          
            terms.pop();          
            // add the selected item          
            terms.push(ui.item.value);          
            // add placeholder to get the comma-and-space at the end          
            terms.push("");          
            //add space to each term object
            this.value = terms.join(" ");          
            return false;        
        },
    });
函数拆分(val)
{
//返回val.split(/\s*/);
返回值拆分(“”);
}
功能提取最后(学期)
{
返回拆分(term.pop();
}
//ajax调用的参数。
var FacilityID=$(“#ddlFacility”).val();
var ClientID=$(“#ddlClient”).val();
变量参数=“{”ClientID:“+ClientID+”,“FacilityID:“+FacilityID+”}”;
$(“#txtTags”).bind(“keydown”,函数(事件){
//选择项目时,不要离开选项卡上的字段。
如果(event.keyCode===$.ui.keyCode.TAB&&
$(此).data(“ui自动完成”).menu.active){
event.preventDefault();
}
}).
自动完成({
最小长度:1,
来源:功能(请求、响应){
$.ajax({
键入:“获取”,
数据:“ClientID=“+ClientID+”&FacilityID=“+FacilityID,
url:“GetTags.asmx/GetTags”,
数据类型:“xml”,
contentType:“text/xml;charset=utf-8”,
成功:函数(xml){
var数据=[];
$(xml).find('string').each(function(){
data.push($(this.text());
});
//答复(数据);
//委托回自动完成,但提取最后一项
响应($.ui.autocomplete.filter(
数据,最后提取(请求期限));
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
警报(文本状态);
}
});
}, 
搜索:函数(){
//自定义最小长度
var项=提取时间(此值);
如果(术语类型)!=‘未定义’)
{           
如果(术语长度<1){
返回false;
}
}
}, 
焦点:函数(){
//防止在焦点上插入值
返回false;
},
选择:功能(事件、用户界面)
{       
var术语=分割(该值);
//雷姆
System.InvalidOperationException: Request format is invalid: text/xml; charset=utf-8. at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() at System.Web.Services.Protocols.WebServiceHandler.Invoke() at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest() 
function split(val) 
    {
      //return val.split(/\s*/);
      return val.split(" ");
    }

    function extractLast(term) 
    {
      return split(term).pop();
    }

        //parameters for the ajax call.
        var FacilityID = $("#ddlFacility").val();
        var ClientID = $("#ddlClient").val();   
        var params = '{"ClientID":"' + ClientID + '", "FacilityID":"' + FacilityID + '"}';

$("#txtTags").bind( "keydown", function( event ) {  
    // don't navigate away from the field on tab when selecting an item.
        if ( event.keyCode === $.ui.keyCode.TAB &&
            $( this ).data( "ui-autocomplete" ).menu.active ) {
          event.preventDefault();
        }
      }).
    autocomplete({
        minLength: 1,
        source: function(request, response) {
            $.ajax({
                type: "GET",
                data: "ClientID=" + ClientID + "&FacilityID=" + FacilityID,
                url: "GetTags.asmx/GetTags",
                dataType: "xml",
                contentType: "text/xml; charset=utf-8",
          success: function(xml) {
                var data = [];
                 $(xml).find('string').each(function(){ 
                    data.push($(this).text());
                    });
                //response(data);
                // delegate back to autocomplete, but extract the last term
                response( $.ui.autocomplete.filter(
                        data, extractLast(request.term)));
          },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });
        }, 
        search: function() {
          // custom minLength
          var term = extractLast( this.value );
          if(typeof(term) !== 'undefined')
            {           
            if (term.length < 1) {
                return false;
            }
          }
        }, 
        focus: function() {
          // prevent value inserted on focus
          return false;
        },
        select: function( event, ui ) 
        {       
            var terms = split(this.value);          
            // remove the current input          
            terms.pop();          
            // add the selected item          
            terms.push(ui.item.value);          
            // add placeholder to get the comma-and-space at the end          
            terms.push("");          
            //add space to each term object
            this.value = terms.join(" ");          
            return false;        
        },
    });