无法使用$ .AJAX将JSON数据发布到MVC操作方法,但我得到了一个Post 200 OK响应

时间:2015-02-04 09:40:15

标签: ajax json asp.net-mvc telerik-mvc

我正在尝试将一些字符串化数据发布到我的MVC控制器中的操作方法。下面是JS代码

function SaveStateForGrid(pGridId, pIsAysnc) {
            var grid = $('#' + pGridId).data("kendoGrid");                
            var tGridState = kendo.stringify(grid.getOptions());
            $.ajax({
                url: '/Home/SaveGridState',
                type: 'POST',
                dataType: 'json',
                async: pIsAysnc,
                data: { pGridState: tGridState, pGridName: pGridId },
                success: function (data) {

                    console.log("Data Saved Successfully");
                },
                error: function (jqXHR, textStatus) {
                    console.log("Error while saving grid data " + pGridId);
                }
            });
        }

我正在尝试将gridstate信息保存到数据库中,并且我的应用中的每个网格都有不同的网格状态信息。

这有时会起作用 - 就像在帖子中命中控制器方法" SaveGridState"如果我在那里保留一个断点等等。在其他情况下,断点不会被击中,数据也不会保存在数据库中,但代码确实会流向"成功" AJAX回调 - 没有错误,我在chrome调试器的网络选项卡中得到200POST OK响应。

我查看了正在发送的数据,并发现在失败的情况下,有一些关于正在发布的数据导致它。特别是第一个参数 - " tGridState" - 字符串化的KendoGrid配置数据。如果我从其他成功的呼叫中替换此数据,则没有问题。我已经比较了不同查看工具的数据,但我无法理解数据中的内容是什么。

附加一个包含"有效"的zip文件的链接和"无效"数据。有任何帮助吗?

https://www.dropbox.com/s/whfglyk607bnd04/Downloads.zip?dl=0

1 个答案:

答案 0 :(得分:0)

发布此消息几个月 - 相关模块已冻结。

我发现字符串化的gridstate信息(网格配置数据)包含了网格相关事件的JS函数,这些函数导致了字符串化数据中的问题。实际上,字符串化从对象中剥离了这样的函数。

不知怎的,这阻止了我在服务器端遇到断点,即使数据已经发布"显然"。

所以我写了一个JS函数,在字符串化之前从我的gridstate配置数据中去除所有不必要的数据 - 然后帖子工作得很好。

瞧!瞧!