1

I am passing json by jquery ajax to controller action but when i debug the action then i notice Section has all null values but when i inspect json there was value.

This is my javascript code where i push data to js array and create json which pass to action.

    var Tuner = {};
    Tuner.Tick1 = 'true';
    Tuner.Tick2 = 'false';
    Tuner.Sections = [];

    var Section_LI = {};
    Section_LI.Section='Consensus Model';
    Section_LI.LI = 'Operating Earnings Before Income Taxes';
    Tuner.Sections.push(Section_LI);

    Section_LI = {};
    Section_LI.Section='Consensus Model';
    Section_LI.LI = 'Net Income attributable to common, GAAP';
    Tuner.Sections.push(Section_LI);

    Section_LI = {};
    Section_LI.Section='Consensus Model';
    Section_LI.LI = 'Diluted Shares Outstanding';
    Tuner.Sections.push(Section_LI);

    Section_LI = {};
    Section_LI.Section = 'Test';
    Section_LI.LI = 'Tridip';
    Tuner.Sections.push(Section_LI);

    Section_LI = {};
    Section_LI.Section='Consensus Model';
    Section_LI.LI='Operating EPS';
    Tuner.Sections.push(Section_LI);

    Section_LI = {};
    Section_LI.Section = 'Segment Details';
    Section_LI.LI = 'Limited Partnership Income-Retirement';
    Tuner.Sections.push(Section_LI);

    Section_LI = {};
    Section_LI.Section = 'Segment Details';
    Section_LI.LI = 'Prepayment Fee Income-Retirement';
    Tuner.Sections.push(Section_LI);

    Section_LI = {};
    Section_LI.Section = 'Segment Details';
    Section_LI.LI = 'Gross Investment Income-Retirement';
    Tuner.Sections.push(Section_LI);

    Section_LI = {};
    Section_LI.Section = 'Segment Details';
    Section_LI.LI = 'Investment Expenses-Retirement';
    Tuner.Sections.push(Section_LI);

This way i am sending data to server side action

    $.ajax({
        type: 'POST',
        url: '@Url.Action("Test1", "Home")',
        /*contentType: 'application/json; charset=utf-8',*/
        //data: JSON.stringify({ sdata: Tuner }),
        data: Tuner,
        dataType: 'json',
        /*dataType: 'text',*/
        success: function (response) {
            if (response.success) {
                alert(response.responseText);
            } else {
                // DoSomethingElse()
                alert(response.responseText);
            }
        },
        error: function (xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            alert(err.Message);
        }
    });

my json

{
    "Tick1":"true",
    "Tick2":"false",
    "Sections":
        [
            {"Section":"Consensus Model","LI":"Operating Earnings Before Income Taxes"},
            {"Section":"Consensus Model","LI":"Net Income attributable to common, GAAP"},
            {"Section":"Consensus Model","LI":"Diluted Shares Outstanding"},
            {"Section":"Consensus Model","LI":"Operating EPS"},
            {"Section":"Segment Details","LI":"Limited Partnership Income-Retirement"},
            {"Section":"Segment Details","LI":"Prepayment Fee Income-Retirement"},
            {"Section":"Segment Details","LI":"Gross Investment Income-Retirement"},
            {"Section":"Segment Details","LI":"Investment Expenses-Retirement"}
        ]
}

my action where section data is getting null

[HttpPost]
public ActionResult Test1(Tuner sdata)
{
    return Json(new { success = true, responseText = "Your message successfuly sent!" }, JsonRequestBehavior.AllowGet);
}

public class Tuner
{
    public string Tick1 { get; set; }
    public string Tick2 { get; set; }
    public List<Sections> Sections { get; set; }

}

public class Sections
{
    public string Section { get; set; }
    public string LI { get; set; }

}

when i am passing json then whole object is null at server side. data: JSON.stringify({ sdata: Tuner }),

when passing js object instead of json then sections are getting null data: Tuner,

where is the problem in my js for which null data is getting there at server side action. please tell me where i need to fix the error. thanks

1 Answer 1

1

Use ajax call with following code :

$.ajax({
    type: 'POST',
    url: '@Url.Action("Test1", "Home")',
    data: {'sdata' : Tuner},
    dataType: 'json',
    success: function (response) {
        if (response.success) {
            alert(response.responseText);
        } else {
            // DoSomethingElse()
            alert(response.responseText);
        }
    },
    error: function (xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
    }
});

Whenever you send data to controller try to use data: {'sdata' : Tuner}, format i.e. data: {'Variable name which you defined in controller method', Variable in jquery}

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.