【问题标题】:get JSon.Stringify value in controller passed through Ajax在通过 Ajax 传递的控制器中获取 JSon.Stringify 值
【发布时间】:2014-07-15 13:09:53
【问题描述】:

我的javascript函数为:

 function savePreObservationQuestionAnswers()
    {
    var lvPreObservationQuestionAnswers = $("#lvPreObservationQuestionAnswers").data("kendoListView");
            var data = lvPreObservationQuestionAnswers.dataSource.data();
var preObservationAnswers = new Array();
        var totalNumber = data.length;
       var ArtifactsModel = [];
    for (var i = 0; i < totalNumber; i++) {
                var currentDataItem = data[i];
                var myjson = [];
                var preObservationAnswers = {};
                preObservationAnswers["EH_PP_OBSRVNFRM_QSTN_ID"] = currentDataItem.EH_PP_OBSRVNFRM_QSTN_ID;
                preObservationAnswers["EH_PP_OBSRVNFRM_QSTN_ANSWR_TXT"] = currentDataItem.EH_PP_OBSRVNFRM_QSTN_ANSWR_TXT;

                myjson.push(preObservationAnswers);

                ArtifactsModel.push(myjson);

                //preObservationAnswers.push(currentDataItem.EH_PP_OBSRVNFRM_QSTN_ID, $('#txtanswer_' + currentDataItem.EH_PP_OBSRVNFRM_QSTN_ID).val());

                //lstArtifactsModel.push(ArtifactsModel);
            }
            alert(ArtifactsModel);
            $.ajax({

                type: "post",
                url: "/PP/savePreObservationAnswers",
                data: {
                    objAllData: JSON.stringify(ArtifactsModel)
                },
                cache: false,
                success: function (data) {

                }
            });
    }

在控制器中我有如下代码:

public JsonResult savePreObservationAnswers(IEnumerable<ArtifactsModel> objAllData)
{
 return Json("");
}

但我没有在控制器中获取 objAllData 的值。

我确信在 javascript 函数中我得到了正确的值。

我该怎么做?

编辑:

在 ArtifactModel 文件中,我有如下属性:

public int EH_PP_OBSRVNFRM_QSTN_ANSWR_ID { get; set; }
        public string EH_PP_OBSRVNFRM_QSTN_ANSWR_TXT { get; set; }
        public int EH_PP_ObservationID { get; set; }

        public int EH_PP_OBSRVFRM_QSTIN_SectionID { get; set; }

        public int EH_PP_OBSRVNFRM_QSTN_ID { get; set; }
        public string EH_PP_OBSRVFRM_QSTIN_SectionTitle { get; set; }
        public string EH_PP_OBSRVNFRM_QSTN_TXT { get; set; }

        public int EH_PP_OBSRVNFRM_QSTN_DSPSEQ { get; set; }

【问题讨论】:

  • 您不必对 JSON 对象进行字符串化,因为您的控制器可能已经考虑 JSON 内容。 JSON.stringify 用于在 javascript 控制台中打印 JSON 对象。不用这个功能试试看$.ajax({..., data : ArtifactsModel, ...

标签: c# javascript jquery .net asp.net-mvc-4


【解决方案1】:

您必须将内容类型指定为 JSON 并对整个对象进行字符串化。目前您正在使用无效的“混合模式”文字对象/json:

data: {objAllData: JSON.stringify(ArtifactsModel) }

应该是:

data: JSON.stringify({ objAllData: ArtifactsModel })

最后是这样的:

$.ajax({
    type: "post",
    contentType: 'application/json; charset=utf-8',
    url: "/PP/savePreObservationAnswers",
    data: JSON.stringify({ objAllData: ArtifactsModel }),
    cache: false,
    success: function (data) {
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    相关资源
    最近更新 更多