好的,所以JQuery的自动完成小部件正在驱使我疯狂!
我尝试过多种加载小部件的方法。我目前正在接受以下内容:
错误:未调用jQuery15105511000803127266_1353087819681 - parsererror
并且响应值(来自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是:
[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();
}
答案 0 :(得分:2)
我对C#不太熟悉,但你可能想要打印供应商清单而不是退货。在做AJAX时,你实际上必须输出数据,而不仅仅是从方法中返回数据(但这可能是我对语言的误解)。
其次,您需要使用库从toArray()创建的数组中创建JSON字符串。否则,jQuery不会将响应识别为JSON,也不会解析它。
答案 1 :(得分:0)
当您指定dataType:“jsonp”而不是JSON时,您获得的错误似乎是某种跨域问题。这让我想知道为什么你得到这个错误,因为你有dataType:“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
});
});
在页面加载之前调用此代码。让我知道它是否有帮助。一切顺利......
答案 2 :(得分:0)
有趣的是。它看起来像JQuery JSONP错误,但您使用的是json。您确定该错误与您附加的代码相对应。看相关问题: parsererror after jQuery.ajax request with jsonp content type