【发布时间】:2013-02-21 17:25:14
【问题描述】:
首先,它对该主题进行了大量研究,但找不到答案或完整示例。我对 jquery 没有太多经验,所以我正在寻找一个我想要完成的简单示例。
我想要一个 Web 服务 (asmx) 返回一个 json,我可以使用它来填充网格、组合框、自动完成等。我正在使用 Visual Studio 2008,这就是我得到的,或者我的目标是什么:
ASMX:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class Services : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<Preceptor> SearchPrecetor()
{
List<Preceptor> myPreceptorList = new List<Preceptor>();
for (int i = 0; i < 10; i++)
{
Preceptor myPreceptor = new Preceptor();
myPreceptor.Id = i;
myPreceptor.Name = "Name" + i.ToString();
myPreceptorList.Add(myPreceptor);
}
return myPreceptorList;
}
public class Preceptor {
public int Id {get; set; }
public string Name { get; set; }
}
}
Javascript:
$(document).ready(function() {
$("#acPreceptors").kendoAutoComplete({
minLength: 3,
dataTextField: "Name",
dataSource: {
type: "json",
serverFiltering: true,
serverPaging: true,
pageSize: 20,
transport: {
contentType: "application/json; charset=utf-8",
type: "POST",
read: "../Services/Services.asmx/SearchPrecetor"
}
}
});
});
这是我得到的错误:
Uncaught TypeError: Object #<Document> has no method 'slice'
我的猜测是整个过程还是有问题,json没有正确到达客户端。同样,我对 jquery 没有太多经验,并且非常感谢一个简单而完整的示例来说明如何做到这一点。
任何想法、链接、代码、修复将不胜感激!谢谢
【问题讨论】:
-
调试器在说什么,什么文件,什么行...
-
感谢您的回复...它在 kendo.web.js 和以下行中: that._pristine = isPlainObject(data) ? $.extend(true, {}, data) : data.slice(0);
-
您能否发布您从该服务返回的响应的全部内容?
-
我得到一个具有两个属性的对象...消息和 StackTrace。消息是:无效的 JSON 原语:Take。 StackTrace 似乎是在服务器端(C#)进行的调用。所以我会说对网络服务的调用没有发送正确的信息。
-
这是请求负载:take=20&skip=0&page=1&pageSize=20&filter%5Blogic%5D=and&filter%5Bfilters%5D%5B0%5D%5Bvalue%5D=asd&filter%5Bfilters%5D%5B0% 5D%5Boperator%5D=startswith&filter%5Bfilters%5D%5B0%5D%5Bfield%5D=名称&filter%5Bfilters%5D%5B0%5D%5BignoreCase%5D=true
标签: c# jquery json web-services kendo-ui