Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery自动完成asmx问题_Jquery_Web Services_Autocomplete - Fatal编程技术网

jQuery自动完成asmx问题

jQuery自动完成asmx问题,jquery,web-services,autocomplete,Jquery,Web Services,Autocomplete,我有一个奇怪的问题。我正在尝试将jQuery自动完成与asmx web服务一起使用。我的JavaScript代码如下所示: $('#txtUsers').autocomplete('AjaxHandler.asmx/GetUserData', { width: 320, max: 5, minChars: 3, parse: function(data) { var items = data.d; var parsed = [];

我有一个奇怪的问题。我正在尝试将jQuery自动完成与asmx web服务一起使用。我的JavaScript代码如下所示:

$('#txtUsers').autocomplete('AjaxHandler.asmx/GetUserData', {
    width: 320,
    max: 5,
    minChars: 3,
    parse: function(data) {
        var items = data.d;
        var parsed = [];
        for (var i = 0; i < items.length; i++)
            parsed.push({
            data: [items[i]],
            value: items[i],
            result: [items[i]]
        });
        return parsed;
    }
});
$('#txtexsers').autocomplete('AjaxHandler.asmx/GetUserData'{
宽度:320,
最高:5,
明查斯:3,
解析:函数(数据){
var项目=数据d;
解析的var=[];
对于(变量i=0;i
我的web服务代码是:

[WebService]
[ScriptService]
public class AjaxHandler : WebService
{
    [WebMethod]
    public List<UserData> GetUserData(string q)
    {
        //My code here.....
    }
}
[WebService]
[脚本服务]
公共类AjaxHandler:WebService
{
[网络方法]
公共列表GetUserData(字符串q)
{
//我的代码在这里。。。。。
}
}

但是,我的web方法没有从autocomplete调用。但是,每当我尝试从jQuery.ajax调用相同的web方法时,它都会被正确地触发。有什么帮助吗?

是的,我也同意这个问题。ScriptService和ScriptMethod都不能帮助自动完成。最简单的解决方法是将.asmx转换为.ashx,并在JSON序列化程序的帮助下按照AJAX插件的预期管理返回结果

我检查了自动完成发送获取请求,但您的服务只接受post请求。我看你也找到了。

我建议使用简单的HttpHandler,并使用json返回数据,因为web服务会重新运行“包装”数据。 它应该非常简单:

List<UserData> items = GetUserDataItems();
string json = JsonConvert.SerializeObject(items);
然后像这样解析:

parse: function (data) {
    return $.map(data, function (row, i) {
        return {
            data: row,
            value: row,
            result: row
        }
    });
},

我的问题不是json数据。我的问题是web服务方法没有从autocomplete调用,而在autocomplete中,它完全是从$.ajax调用的。您确定aotocomplete没有调用您的方法吗?当自动完成工作时,您是否尝试过调试服务?似乎有问题,因为autocomplete无法分析数据。但它只是暗示这可能是错误的。只要尝试发送json它很简单,我相信它会工作。是的。我在我的服务器端代码中设置了一个断点,它不会被自动完成击中。但是,它正在使用aspx页面。但如果我的aspx为什么不通过asmx?谢谢你的建议。但是,通过在web.config中包含,问题得以解决
parse: function (data) {
    return $.map(data, function (row, i) {
        return {
            data: row,
            value: row,
            result: row
        }
    });
},