1

I have javascript function as:

 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) {

                }
            });
    }

In controller I have code like:

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

But i am not getting values on objAllData in controller.

I am sure in javascript function i am getting proper values.

How can i do this?

Edit:

In ArtifactModel File i have properties like:

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; }
1
  • 1
    you don't have to Stringify your JSON object as your controller may allready espect JSON content. JSON.stringify is used to print JSON object in the javascript console. Just give a try without this function $.ajax({..., data : ArtifactsModel, ... Commented Jul 15, 2014 at 13:17

1 Answer 1

1

You have to specify the content type to JSON and stringify the whole object. For the moment you are using a "mixed mode" literal object/json which is not valid :

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

should be :

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

Finally something like :

$.ajax({
    type: "post",
    contentType: 'application/json; charset=utf-8',
    url: "/PP/savePreObservationAnswers",
    data: JSON.stringify({ objAllData: ArtifactsModel }),
    cache: false,
    success: function (data) {
    }
});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.