Javascript jquery自动完成数据源更改
我已经设置了一个jqueryautocomplete,它根据文本框上的输入更改数据源 jquery上的数据源更改后,只有按向上或向下箭头按钮,才会触发 我用firebug检查了数据源,没有发现任何错误 有人能告诉我如何向控件发送向上或向下箭头键,或以任何其他方式解决此问题吗 非常感谢 编辑:我已将其替换为JSON,如下所示,但似乎请求来自错误警报框 jQuery(函数(){ jQuery(“输入#自动完成”).autocomplete({ contentType:'application/json;charset=utf-8', 数据类型:“json”, mustMatch:false, 限额:10, 明查斯:2Javascript jquery自动完成数据源更改,javascript,jquery,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui Autocomplete,我已经设置了一个jqueryautocomplete,它根据文本框上的输入更改数据源 jquery上的数据源更改后,只有按向上或向下箭头按钮,才会触发 我用firebug检查了数据源,没有发现任何错误 有人能告诉我如何向控件发送向上或向下箭头键,或以任何其他方式解决此问题吗 非常感谢 编辑:我已将其替换为JSON,如下所示,但似乎请求来自错误警报框 jQuery(函数(){ jQuery(“输入#自动完成”).autocomplete({ contentType:'application/jso
select: function (event, ui) {
AutoCompleteSelectHandler(event, ui)
}
,
source: function (request, response) {
jQuery.ajax({
url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
data: {},
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
alert(data);
},
error: function (XMLHttpRequest, textStatus,
错误(抛出){
警报(文本状态);
}
});
}
});
有一个html输入框。
我做错了什么?我已经确认web服务工作正常
编辑2:我做了如下更改:
jQuery(函数(){
jQuery(“输入#自动完成”).autocomplete({
jQuery(“#自动完成”).val()+“}”,
数据类型:“json”,
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
dataFilter:函数(数据){return data.d;},
成功:功能(数据){
警报(数据d);
},
错误:函数(XMLHttpRequest、textStatus、,
错误(抛出){
警报(文本状态);
}
});
}
}))
所以警报工作正常。但是jquery不显示匹配的列表。我该怎么做
编辑2:
我已经设法解决了webservice的问题。我如何设置响应,以便autocomplete相应地显示列表?目前列表上的每个项目都向我显示完整的项目列表
ie)如果我输入'ab',如果有3个匹配的东西,那么它会在3行不同的代码上显示相同的结果3次
我的jquery设置如下所示:
jQuery(函数(){
jQuery(“输入#自动完成”).autocomplete({
任何帮助都将不胜感激,非常感谢!我已经让它工作了,但有一件事我不确定,那就是该项是否变成了一个字符串数组而不是JSON对象。我尝试将每个项解析为JSON,但似乎不起作用 下面是使用webservice jquery组合的jqueryjson jQuery(函数(){ jQuery(“输入#自动完成”).autocomplete({
minChars:2,
选择:功能(事件、用户界面){
AutoCompleteSelectHandler(事件,用户界面)
}
,
来源:功能(请求、响应){
jQuery.ajax({
url:“http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
数据:“{郊区:”+jQuery(“#自动完成”).val()+“}”,
数据类型:“json”,
类型:“POST”,
明查斯:2,
contentType:“应用程序/json;字符集=utf-8”,
dataFilter:函数(数据){返回数据;},
成功:功能(数据){
var obj=jQuery.parseJSON(data.d);
响应($.map)(obj,功能(项){
var item_obj=jQuery.parseJSON(item);
返回{
价值:项目[1]
}
}))
},
//解析:函数(数据){
//解析的var=[];
//data=data.d;
//对于(变量i=0;i
你的描述(对我来说)毫无意义。例如,在jquery上的数据源更改后,它只有按向上或向下箭头按钮才会启动。jquery上的数据源是什么
?是什么原因导致它更改?什么是它
没有启动?如果不共享代码,帮助你就像帮助说“我正在使用自动完成,但它不工作,请帮助“。我使用xmlhttpobject上的请求从页面获取列表,因此数据源只是一个字符串数组。如果我更改数据源,则不会显示自动完成列表。但是,当我按向上箭头键或向下箭头键时,列表会显示。也许我应该尝试将json与自定义数据源一起使用。仍然不清楚,并且肯定不会重新生成
});
minChars: 2,
select: function (event, ui) {
AutoCompleteSelectHandler(event, ui)
}
,
source: function (request, response) {
jQuery.ajax({
url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
data: '{ Suburb: "' +
});
minChars: 2,
select: function (event, ui) {
AutoCompleteSelectHandler(event, ui)
}
,
source: function (request, response) {
jQuery.ajax({
url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
data: '{ Suburb: "' + jQuery("#autocomplete").val() + '" }',
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
value: data.d
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
}
});
minChars: 2,
select: function (event, ui) {
AutoCompleteSelectHandler(event, ui)
}
,
source: function (request, response) {
jQuery.ajax({
url: "http://localhost/integration/webservices/PostcodeJSON.asmx/GetPostCodeListJSONfromSuburb",
data: '{ Suburb: "' + jQuery("#autocomplete").val() + '" }',
dataType: "json",
type: "POST",
minChars: 2,
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
var obj = jQuery.parseJSON(data.d);
response($.map(obj, function (item) {
var item_obj = jQuery.parseJSON(item);
return {
value: item[1]
}
}))
},
// parse: function (data) {
// var parsed = [];
// data = data.d;
// for (var i = 0; i < data.length; i++) {
// parsed[parsed.length] = {
// data: data[i],
// value: data[i].value,
// result: data[i].value
// };
// }
// return parsed;
// },
// formatItem: function (item) {
// return item.value;
// },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
}
});
});