Javascript Typeahead问题-Ajax只返回Json数据一次
几个小时以来,我一直在使用Twitter的Typeahead插件 基本上,我们是从响应格式为.JSON的web服务(ASMXWebService)中提取数据 一旦我们通过猎犬获得它,我们就将它转换成一个字符串,去掉一些额外的字符,然后再将其转换成Json,然后将其传递给TypeaheadJavascript Typeahead问题-Ajax只返回Json数据一次,javascript,jquery,ajax,json,typeahead,Javascript,Jquery,Ajax,Json,Typeahead,几个小时以来,我一直在使用Twitter的Typeahead插件 基本上,我们是从响应格式为.JSON的web服务(ASMXWebService)中提取数据 一旦我们通过猎犬获得它,我们就将它转换成一个字符串,去掉一些额外的字符,然后再将其转换成Json,然后将其传递给Typeahead var engine= new Bloodhound({ datumTokenizer: function (d) { return Bloodhound.tokeni
var engine= new Bloodhound({
datumTokenizer: function (d) {
return Bloodhound.tokenizers.whitespace("value")
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch : {
ttl : 1000,
url : '/webservice.asmx'
},
remote: {
ttl : 1000,
url: '/webservice.asmx',
ajax: {
beforeSend: function (jqXhr, settings) {
jqXhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
settings.data = '{"query":"' + $('#inputText').val() + '"}';
alert(settings.data);
},
type: "POST",
context: this
},
filter: function (response) {
//return response;
if (response.hasOwnProperty('d')) {
var returned = String(response.d);
returned = returned.slice(14,-1);
var parsedJSON = jQuery.parseJSON(returned);
return parsedJSON ;
}
else {
return response;
}
}
}
});
engine.initialize();
$('#inputText').typeahead(null, {
source: engine.ttAdapter()
});
在输入字段中键入内容时,代码会根据查询通过Ajax一次、一次地获取数据,但是当用户在输入框中键入更多字符时,代码会多次通过过滤器。我相信这就是问题所在。由于使用ASMXWebService的方法,我们必须使用一种POST类型,所以Ajax似乎无法发出多个请求,无论我们在输入框中键入多少字符
正如我所说,这几天来一直让我们抓狂,所以我们非常感谢您的帮助。这个博客帮助我们解决了这个问题- 看起来我们把事情复杂化了一点。我们仍然需要去掉并重新转换我们的Web服务器在Ajax部分中吐出的Json,但我们让它工作起来了