javascript “未捕获的类型错误:e.slice 不是函数”,同时将 json 数据传递到“果园”中查看
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/32086927/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
"Uncaught TypeError: e.slice is not a function" while passing json data to view in "orchard"
提问by Nilkanth
public ActionResult Grouping()
{
return View();
}
public ActionResult Read([DataSourceRequest] DataSourceRequest request, string text)
{
var result = _auto.Table.ToList().Where(s => s.Charactres.Contains(text));
return Json(result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
view code:`enter code here`
@model IEnumerable<Autocomplete.Models.Autocomplete>
@{
ViewBag.Title = "Grouping";
}
<h2>Grouping</h2>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script src="~/Modules/Autocomplete/Scripts/kendo/2014.3.1119/jquery.min.js"></script>
<script src="~/Modules/Autocomplete/Scripts/kendo/2014.3.1119/kendo.all.min.js"></script>
<script src="~/Modules/Autocomplete/Scripts/kendo/2014.3.1119/kendo.aspnetmvc.min.js"></script>
<link href="~/Modules/Autocomplete/Content/kendo/2014.3.1119/kendo.common.min.css" rel="stylesheet" type="text/css" />
<link href="~/Modules/Autocomplete/Content/kendo/2014.3.1119/kendo.default.min.css" rel="stylesheet" type="text/css" />
<link href="~/Modules/Autocomplete/Content/kendo/2014.3.1119/kendo.dataviz.min.css" rel="stylesheet" type="text/css" />
<link href="~/Modules/Autocomplete/Content/kendo/2014.3.1119/kendo.mobile.all.min.css" rel="stylesheet" type="text/css" />
<link href="~/Modules/Autocomplete/Content/kendo/2014.3.1119/kendo.dataviz.default.min.css" rel="stylesheet" type="text/css" />
<div class="demo-section">
<h4>Customers</h4>
@(Html.Kendo().AutoComplete()
.Name("data")
.DataTextField("ContactName")
.Filter("contains")
.MinLength(3)
.HtmlAttributes(new { style = "width:250px" })
.Placeholder("Type a customer name")
.DataSource(source => source
.Custom()
//.Group(g => g.Add("Country", typeof(string)))
.Transport(transport => transport
.Read(read =>
{
read.Action("Read", "AutoComplete")
.Data("onAdditionalData");
}))
.ServerFiltering(true))
)
</div>
<script>
function onAdditionalData() {
return {
text: $("#data").val()
};
}
</script>
回答by Sudhir
Try returning the result from the controller method without using ToDataSourceResult() method. This appears to send down the data without wrapping the array that client javascript looks for, inside an object.
尝试从控制器方法返回结果而不使用 ToDataSourceResult() 方法。这似乎发送了数据,而没有将客户端 javascript 查找的数组包装在一个对象中。
So your controller return statement would look something like this:
所以你的控制器返回语句看起来像这样:
return Json(result, JsonRequestBehavior.AllowGet);
I got this solution actually from another stackoverflow answer: Error rendering data with Javascript / KendoUI autocomplete - Object #<Object> has no method 'slice' - how to resolve?
我实际上从另一个 stackoverflow 答案中得到了这个解决方案: 使用 Javascript / KendoUI 自动完成错误渲染数据 - 对象 #<Object> 没有方法“切片” - 如何解决?
This solution worked for me. Good luck!
这个解决方案对我有用。祝你好运!
回答by JoanR
For me the solution was define the model (schema) to be the same as the data received.
对我来说,解决方案是将模型(架构)定义为与接收到的数据相同。
In my case (ASP.NET MVC) I set a custom DataSource with the correct schema:
就我而言(ASP.NET MVC),我使用正确的架构设置了一个自定义数据源:
.DataTextField("description")
.DataValueField("name")
.DataSource(dataSource => dataSource
.Custom()
.Type("aspnetmvc-ajax")
.ServerPaging(false)
.ServerSorting(false)
.ServerFiltering(false)
.Transport(transport => transport
.Read(read => read.Action("Get_Users", "User"))
)
.Schema(schema => schema
.Data("Data")
.Model(model =>
{
model.Id("description");
model.Field("name", typeof(string));
})
)
)
References: https://www.telerik.com/forums/uncaught-typeerror-e-slice-is-not-a-function-on-data-fetch
参考资料:https: //www.telerik.com/forums/uncaught-typeerror-e-slice-is-not-a-function-on-data-fetch
使用 Javascript / KendoUI 自动完成渲染数据时出错 - 对象 #<Object> 没有方法“切片” - 如何解决?