我刚刚开始使用Kendo UI,我为MVC Web应用程序项目创建了一个Kendo UI并创建了一个View,它将在Grid中显示User列表,从我创建的Azure Web Service中检索用户的数据
我遇到的问题是有一个语法错误,说有一个无效的标签。这是json Firebug正在捕捉
{
"Meta": {
"Method": "GetUsuarios",
"Status": "ok"
},
"Response": [
{
"ApellidoM": "TestInfo1",
"ApellidoP": "TestInfo1",
"CreatedDateTime": "/Date(1357763187027-0600)/",
"Nombre": "TestInfo1",
"Password": "TestInfo1",
"UpdatedDateTime": "/Date(1357763187027-0600)/",
"UserName": "TestInfo1",
"UsuarioId": 1
},
{
"ApellidoM": "TestInfo2",
"ApellidoP": "TestInfo2",
"CreatedDateTime": "/Date(1357863418857-0600)/",
"Nombre": "TestInfo2",
"Password": "TestInfo2",
"UpdatedDateTime": "/Date(1357863418857-0600)/",
"UserName": "TestInfo2",
"UsuarioId": 2
}
]
}
我在JSONLint.com上测试了它,它是一个有效的json字符串,这是我的javascript函数,我在其中创建DataSource并填充网格:
$(function () {
var ds = new kendo.data.DataSource({
transport: {
read: {
url: "http://127.0.0.1:81/SismosService.svc/usuario/index",
dataType: "jsonp"
}
},
schema: {
data: "Response"
},
});
$("#usuariosGrid").kendoGrid({
columns: ["Nombre", "ApellidoP", "ApellidoM"],
dataSource: ds
});
});
这是我的观点:
<!DOCTYPE html>
<html>
<head >
<link href="<%: Url.Content("~/Content/kendo/2012.3.1114/kendo.common.min.css")%>" rel="stylesheet" type="text/css" />
<link href="<%: Url.Content("~/Content/kendo/2012.3.1114/kendo.default.min.css")%>" rel="stylesheet" type="text/css" />
<title><%: ViewBag.GestionTitle %></title>
</head>
<body>
<h1><%: ViewBag.GestionTitle %></h1>
<div id="usuariosGrid"></div>
<button id="addUsuario" type="button" class="k-input"><%: ViewBag.Agregar %></button>
<script src="<%: Url.Content("~/Scripts/jquery-1.7.1.min.js")%>"></script>
<script src="<%: Url.Content("~/Scripts/kendo/2012.3.1114/kendo.web.min.js")%>"></script>
<script src="<%: Url.Content("~/Scripts/usuario/usuario.js")%>"></script>
</body>
</html>
正如你所看到的,我正在尝试做的很简单,为什么它会失败?我的Web服务在我创建的ResponseObject中发送用户列表,该类如下所示:
[DataContract]
public class ResponseObject<T>
{
public ResponseObject(T[] Response, MetaObject Meta)
{
this.Response = Response;
this.Meta = Meta;
}
[DataMember]
public T[] Response { get; set; }
[DataMember]
public MetaObject Meta { get; set; }
}
Meta只是我创建的另一个类,只是为了添加更多信息,因为我的Web服务不断增长,需要将新信息发送给客户端。
这是在我的界面中定义获取用户的方法:
[WebGet(UriTemplate = "/usuario/index",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
ResponseObject<Usuarios> GetUsuarios();
我收到此错误的原因是什么?我发送用户的方式是错误的吗?
答案 0 :(得分:0)
好的我解决了这个问题,我在我的Web服务中添加了以下内容以启用Access-Control-Allow-Origin
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
</customHeaders>
</httpProtocol>
这是在system.webServer标记内部。希望这可以帮助任何有类似问题的人。