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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-28 14:50:36  来源:igfitidea点击:

"Uncaught TypeError: e.slice is not a function" while passing json data to view in "orchard"

javascriptjson

提问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

Error rendering data with Javascript / KendoUI autocomplete - Object #<Object> has no method 'slice' - how to resolve?

使用 Javascript / KendoUI 自动完成渲染数据时出错 - 对象 #<Object> 没有方法“切片” - 如何解决?