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