Javascript jquery自动完成数据源更改

Javascript jquery自动完成数据源更改,javascript,jquery,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui Autocomplete,我已经设置了一个jqueryautocomplete,它根据文本框上的输入更改数据源 jquery上的数据源更改后,只有按向上或向下箭头按钮,才会触发 我用firebug检查了数据源,没有发现任何错误 有人能告诉我如何向控件发送向上或向下箭头键,或以任何其他方式解决此问题吗 非常感谢 编辑:我已将其替换为JSON,如下所示,但似乎请求来自错误警报框 jQuery(函数(){ jQuery(“输入#自动完成”).autocomplete({ contentType:'application/jso

我已经设置了一个jqueryautocomplete,它根据文本框上的输入更改数据源

jquery上的数据源更改后,只有按向上或向下箭头按钮,才会触发

我用firebug检查了数据源,没有发现任何错误

有人能告诉我如何向控件发送向上或向下箭头键,或以任何其他方式解决此问题吗

非常感谢

编辑:我已将其替换为JSON,如下所示,但似乎请求来自错误警报框

jQuery(函数(){ jQuery(“输入#自动完成”).autocomplete({ contentType:'application/json;charset=utf-8', 数据类型:“json”, mustMatch:false, 限额:10, 明查斯:2

            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);
                    }
                });
            }
        });



    });