Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从JSON到jqGrid获取数据_Jquery_Json_Jqgrid - Fatal编程技术网

Jquery 从JSON到jqGrid获取数据

Jquery 从JSON到jqGrid获取数据,jquery,json,jqgrid,Jquery,Json,Jqgrid,我正在尝试从以下位置获取数据: jQuery(document).ready(function() { var mydata; $.getJSON('@Url.Action("GetJsonData", "Home")', function(data) { datatype: 'json', mydata = data; // alert(mydata); }); 到我的j

我正在尝试从以下位置获取
数据

 jQuery(document).ready(function() {

 var mydata;
        $.getJSON('@Url.Action("GetJsonData", "Home")', function(data) {

            datatype: 'json',
                mydata = data;
            // alert(mydata);

        });
到我的
jqGrid

        $("#grid").jqGrid({
            datastr: data,
            datatype: 'json',
            width: '100%',
            colNames: ["Seq ID", "Fund ID", "Name", "Fund", "Bonus", "Allocation", "Blank", "Begin", "End"],
            colModel: [
                {
                    name: 'seqid',
                    index: 'seqid',
                    editable: true,
                }, {
                    name: 'fund id',
                    index: 'fund id',
                    editable: true,
                }, {
                    name: 'name',
                    index: 'name',
                    editable: true,
                }, {
                    name: 'fund',
                    index: 'fund',
                    editable: true,
                }, {
                    name: 'bonus',
                    index: 'bonus',
                    editable: true,
                }, {
                    name: 'allocation',
                    index: 'allocation',
                    editable: true,
                }, {
                    name: 'blank',
                    index: 'blank',
                    editable: true,
                }, {
                    name: 'begin',
                    index: 'begin',
                    editable: true,
                }, {
                    name: 'end',
                    index: 'end',
                    editable: true,
                }
            ],


            pager: '#pager',
            'cellEdit': true,
            'cellsubmit': 'clientArray',
            editurl: 'clientArray'
        });
数据如下所示:

{
    "FUND_SEQ_ID": 1.0,
    "FUND_ID": 23,
    "FUND_NM": "INSTITUTIONAL",
    "FUND_TICKER_NM": "TINXX",
    "FUND_SALARY_IND": "A",
    "FUND_BONUS_IND": "N",
    "FUND_ALCTN_IND": "\u0000",    <- This should be null
    "BEG_DT": "20140101",
    "END_DT": "24000101"
  },
在我看来(
Index.cshtml
),我在
jQGrid
url
中调用该方法

    $(document).ready(function() {


            jQuery("#grid").jqGrid({
                url: '@Url.Action("GetAssociateFromDb", "Home")',
                datatype: "json",
                width: '100%',
                colNames: ["Seq ID", "Fund ID", "Name", "Fund", "Salary", "Bonus", "Allocation", "Begin", "End"],
                colModel: [
                    { name: "FUND_SEQ_ID" },
                    { name: "FUND_ID" },
                    { name: "FUND_NM" },
                    { name: "FUND_TICKER_NM" },
                    { name: "FUND_SALARY_IND" },
                    { name: "FUND_BONUS_IND" },
                    { name: "FUND_ALCTN_IND" },
                    { name: "BEG_DT" },
                    { name: "END_DT" }
                ],
                cmTemplate: { editable: true },
            //    data: JSON.parse(data),  // Load Data
                rowNum: 10,        // Total records to show at a time by default
                loadonce: true,       
                rowList: [10, 20],  // For Paging
                pager: '#pager',
                jsonReader: {
                    repeatitems: false,
                    page: function () { return 1; },  // This was necessary.
                    root: function (obj) { return obj; },
                    records: function (obj) { return obj.length; }
                },
                viewrecords: true,
                gridview: true,
                autowidth: true,
                height: 'auto',
                hoverrows: true,
                caption: "List of Funds"
        });
    });

根据@Oleg所说的,您应该删除
jQuery(document)上的函数。准备好
并在jqGrid上设置此选项:

$("#grid").jqGrid({
    url: '@Url.Action("GetJsonData", "Home")',
    datatype: "json",
    width: '100%',
    // and so on
...
});

您的数据格式是否可以更改?最好的方法是根据需要从服务器获取,例如:

  { 
  "totalpages": "xxx", 
  "currpage": "yyy",
  "totalrecords": "zzz",
  "invdata" : [
    {"id" :"1", "cell" :["1.0", "23", "INSTITUTIONAL MONEY MARKET FUND", ...]},
    {"id" :"2", "cell" :["cell21", "cell22", "cell23"]},
      ...
  ]
}
如果您不能-您仍然可以将数据更改为一些“新数据”,因此它将采用上述格式(取自

如果您仍然选择继续使用代码,请考虑以下内容:

colModel: [
    { name: "FUND_SEQ_ID" },
    { name: "FUND_ID" },
    { name: "FUND_NM" },
    { name: "FUND_TICKER_NM" },
    { name: "FUND_SALARY_IND" },
    { name: "FUND_BONUS_IND" },
    { name: "FUND_ALCTN_IND" },
    { name: "BEG_DT" },
    { name: "END_DT" }
],
cmTemplate: {editable: true},
datastr—当datatype参数设置为xmlstring或jsonstring时的数据字符串

(摘自) 您的数据类型是“json”
希望这会对您有所帮助。

我看到的主要问题是列的命名与输入JSON数据中的不一样。请尝试将
colModel
替换为以下内容:

colModel: [
    { name: "FUND_SEQ_ID" },
    { name: "FUND_ID" },
    { name: "FUND_NM" },
    { name: "FUND_TICKER_NM" },
    { name: "FUND_SALARY_IND" },
    { name: "FUND_BONUS_IND" },
    { name: "FUND_ALCTN_IND" },
    { name: "BEG_DT" },
    { name: "END_DT" }
],
cmTemplate: {editable: true},
选项
cmTemplate
允许您在
colModel
中设置公共属性。我建议您在所有网格中也使用
gridview:true
autoencode:true

此外,您还可以使用

url: '@Url.Action("GetJsonData", "Home")',
datatype: "json",
loadonce: true
而不是使用
$.getJSON

loadonce: true,
jsonReader: {
repeatitems: false,
root: function (obj) { return obj; },
page: function (obj) { return grid.jqGrid('getGridParam', 'page'); },
total: function (obj) { return Math.ceil(obj.length / 
grid.jqGrid('getGridParam', 'rowNum')); },
records: function (obj) { return obj.length; }
},

在你的$(“#grid”).jqGrid调用中也添加此项。

问题中包含的数据不是项目的数组。你真的试图以这种方式使用jqGrid,还是只是没有包含服务器的完整响应?为什么不使用
url:'@url.Action(“GetJsonData”,“Home”)
数据类型:“json”
?这是填充网格数据的最标准的方法。感谢@Oleg的评论。我尝试过了,但网格仍然是空的。数据实际上是一个数组。它看起来像提供的示例,但有10条附加记录包装在
[]
。查看我更新的代码。它正在使IE崩溃。你看到什么错误了吗?我按照你说的做了,我删除了
url:
,并将数据类型更改为
local
你所说的“它正在使IE崩溃”是什么意思?错误是什么?“停止运行此脚本?此页面上的脚本导致您的web浏览器运行缓慢,如果继续运行,您的计算机可能会无响应。”它加载了表,但没有数据。我已更新了我的日志,我希望它是动态的(从数据库/live feed),这就是我不使用静态数据的原因。我确实尝试了
datastr
方法,但不幸的是,它对我不起作用。网格中没有数据。谁谈到了静态数据?当然,你希望它可以动态更改。那么,为什么不使用“url”并从服务器获取上述格式呢?(如简单的演示示例).我错过了什么?我不知道你在说什么。对不起。谢谢你的回答。我完全按照你说的做了..但仍然没有数据?没有错误或任何东西,只是没有数据。@Current:不客气!我想你的代码中犯了一些错误。请看和。第一个演示使用
数据类型:“jsonstring”“
第二个使用
数据类型:“json”
并从服务器加载数据。这两个演示都能工作。你应该将演示的代码与你的代码进行比较,你应该会发现错误。再次感谢你的演示。我已经尝试过你的方法,它能工作。我想我的问题是
$(“#网格”).jqGrid({url:'@url.Action(“GetJsonData”),“Home”)、数据类型:“json”、loadonce:true、
…太糟糕了,我不能使用
alert(@Url.Action…);
我们可以在其他地方继续讨论吗?@current:你必须替换
return serializer.Serialize(rows);
return rows;
GetAssociateFromDB
中。问题是
返回json(jsonData,JsonRequestBehavior.AllowGet);
进行JSON序列化。如果序列化对象,则反序列化的数据也将是客户端的对象。如果使用字符串(与当前一样)然后,该字符串也将在客户端反序列化为字符串,处理将失败。因此,当前错误出现在服务器代码中。您将看到
\“
而不是
在服务器响应中。这个问题真是个老问题。没有必要添加您的答案。我花了一天时间解决了这个问题。无论是旧的还是新的,这都可以帮助任何人。