Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
C# JQuery自动完成赢得';t加载远程值_C#_Jquery_Autocomplete_Webmethod - Fatal编程技术网

C# JQuery自动完成赢得';t加载远程值

C# JQuery自动完成赢得';t加载远程值,c#,jquery,autocomplete,webmethod,C#,Jquery,Autocomplete,Webmethod,好吧,那么JQuery的自动完成小部件快把我逼疯了 我尝试了许多加载小部件的方法。我目前得到以下信息: 错误:未调用JQuery1510511000803127266_1353087819681- 解析器错误 而响应值(来自firebug)似乎是System.string[],尽管我不确定值是System.string[]还是实际的System.string[]对象 我只是在做傻事,还是我遗漏了什么(请友好地回答最后一个问题…?) 我的javascript是: $("#clientName").

好吧,那么JQuery的自动完成小部件快把我逼疯了
我尝试了许多加载小部件的方法。我目前得到以下信息:

错误:未调用JQuery1510511000803127266_1353087819681- 解析器错误

而响应值(来自firebug)似乎是
System.string[]
,尽管我不确定值是
System.string[]
还是实际的
System.string[]
对象 我只是在做傻事,还是我遗漏了什么(请友好地回答最后一个问题…?)

我的javascript是:

$("#clientName").autocomplete({
    source: function (request, response) {
        $.ajax({
            url: "/supplier/apSupplierSearch/",
            data: { searchAPName: clientName.value },
            dataType: "json",
            type: "POST",
            success: function (data) {
                //response(data);
                response($.map(data, function (item) {
                    return {
                        label: item.Name,
                        value: item.Name
                    }
                }))
            }
        }); // ajax
    }, // function [{
    scroll: true,
    scrollHeight: 600,
    minLength: 4
});
我的方法是:

[WebMethod]
public string[] apSupplierSearch(string searchAPName)
{
    IList<int> selectedPropertyIDs = new List<int>();
    string currentRole = UserServices.GetCurrentRole();
    Property currentProperty = UserServices.GetCurrentPropety();
    List<ApSupplier> suppliers = ApSupplierQueries.GetApSuppliers(searchAPName, selectedPropertyIDs, currentRole, currentProperty);
    List<string> supplierList = new List<string>();
    foreach (ApSupplier supplier in suppliers)
    {
        supplierList.Add(supplier.Name);
    }
    return supplierList.ToArray();
}
[WebMethod]
公共字符串[]apSupplierSearch(字符串搜索名称)
{
IList selectedPropertyIDs=新列表();
字符串currentRole=UserServices.GetCurrentRole();
Property currentProperty=UserServices.GetCurrentProperty();
列出供应商=apsupplierquerys.GetApSuppliers(searchAPName、SelectedPropertyId、currentRole、currentProperty);
列表供应商列表=新列表();
foreach(供应商中的供应商)
{
供应商列表。添加(供应商名称);
}
返回supplierList.ToArray();
}

我对C不太熟悉,但您可能希望打印供应商列表,而不是将其退回。在使用AJAX时,实际上必须输出数据,而不仅仅是从方法返回数据(但这可能是我对该语言的误解)


其次,您需要使用一个库从从toArray()创建的数组中创建JSON字符串。否则,jQuery不会将响应识别为JSON,也不会解析它。

当您指定数据类型:“jsonp”而不是JSON时,您得到的错误似乎是某种跨域问题。这让我想知道为什么会出现这个错误,因为您有数据类型:“json”

我有一段类似的代码,对我来说似乎工作得很好。我服务中的方法是“GET”类型。如下所示:

    var availabletags=new Array();

    CallService2("GET", "ServiceUrl",
        function (data) {
            if (data) {
            $.each(data, function (index, item) {
                    availabletags.push(item);
                });
        },
        function (result) {
            alert('Service call failed: ' + result.status + '' + result.statusText);
        });

    function CallService2(method, serviceUrl, successHandler, errorHandler) {
    $.ajax({
        type: method,
        url: serviceUrl,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successHandler,
        error: errorHandler
        });
    }

    $(function() {  
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});

在页面加载之前调用此代码。如果有帮助,请告诉我。祝您一切顺利……

非常有趣。这看起来像是JQuery JSONP错误,但您使用的是json。您确定错误与您附加的代码对应吗。请参阅相关问题: