Question

I have used a gantt chart in my C# project which was from http://gantt.twproject.com/distrib/gantt.html. If you click the export button we get a json from the gantt. i am passing the same json to my wcf as below.

function WCFJSON(ganttData) {

     console.log(ganttData); //Object 
     var gdata = JSON.stringify(ganttData);        
     console.log(gdata);

     $.ajax({
         type: "POST",  
         url: "../../GanttService.svc/SaveGanttData", // Location of the service
         data: gdata, //Data sent to server
         contentType: "application/json; charset=utf-8",  
         dataType: "json", //Expected data format from server
         processdata: true, //True or False
         success: function (msg) {//On Successfull service call
             ServiceSucceeded(msg);
         },
         error: ServiceFailed// When Service call fails
     });
 }

This is the json in gdata variable.

"{"tasks":[{"id":-1,"name":"Gantt editor","code":"","level":0,"status":"STATUS_ACTIVE","start":1386527400000,"duration":30,"end":1390415399999,"startIsMilestone":true,"endIsMilestone":false,"collapsed":false,"assigs":[{"id":"tmp_1386591686448","resourceId":"tmp_1","roleId":"tmp_1","effort":0}],"description":"","progress":0},{"id":-2,"name":"codings","code":"","level":1,"status":"STATUS_ACTIVE","start":1386527400000,"duration":10,"end":1387564199999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"description":"","progress":0},{"id":-3,"name":"gant parts","code":"","level":2,"status":"STATUS_ACTIVE","start":1386527400000,"duration":2,"end":1386700199999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":""},{"id":-4,"name":"editor parts","code":"","level":2,"status":"STATUS_SUSPENDED","start":1386700200000,"duration":4,"end":1387218599999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":"3"},{"id":-5,"name":"testings","code":"","level":1,"status":"STATUS_SUSPENDED","start":1388601000000,"duration":15,"end":1390415399999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":"2:5","description":"","progress":0},{"id":-6,"name":"test on safari","code":"","level":2,"status":"STATUS_SUSPENDED","start":1389810600000,"duration":2,"end":1389983399999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":""},{"id":-7,"name":"test on ie","code":"","level":2,"status":"STATUS_SUSPENDED","start":1390156200000,"duration":3,"end":1390415399999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":"6"},{"id":-8,"name":"test on chrome","code":"","level":2,"status":"STATUS_SUSPENDED","start":1390156200000,"duration":2,"end":1390328999999,"startIsMilestone":false,"endIsMilestone":false,"collapsed":false,"assigs":[],"depends":"6"}],"selectedRow":2,"deletedTaskIds":[],"resources":[{"id":"tmp_1","name":"Resource 1"},{"id":"tmp_2","name":"Resource 2"},{"id":"tmp_3","name":"Resource 3"},{"id":"tmp_4","name":"Resource 4"},{"id":"tmp_5","name":"Resource 5"},{"id":"tmp_6","name":"Resource 6"},{"id":"tmp_7","name":"Resource 7"},{"id":"tmp_8","name":"Resource 8"},{"id":"tmp_9","name":"Resource 9"},{"id":"tmp_10","name":"Resource 10"}],"roles":[{"id":"tmp_1","name":"Project Managers"},{"id":"tmp_2","name":"Worker"},{"id":"tmp_3","name":"Stakeholder/Customer"}],"canWrite":true,"canWriteOnParent":true}"

My WCF Method is

  public string SaveGanttData(String tasks)
    {
        try
        { 
            var apps = JsonConvert.DeserializeObject<Tasks>(tasks);
            var retValue = "";
            foreach (var task in apps.tasks)
            {                    
                retValue += "Name - " + task.name + " Code - " + task.code;
            }
            Console.ReadLine();
            return string.Format("You entered: {0}", retValue);
        }
        catch (Exception ex)
        {
            return string.Format("Failed: {0}", ex.Message);
        }

    }

Always null is shown in the browser console after the service is hit. i have tried in several ways but unable to pass the exact json data to my wcf. please help me!

Était-ce utile?

La solution

Your service is accepting only single string, while you are sending more complex JSON in form:

  • tasks - array of objects
  • selectedRow - integer
  • deletedTaskIds - array of objects
  • resources - array of objects
  • roles - array of objects
  • canWrite - boolean
  • canWriteOnParent - boolean

If you are using Visual Studio 2013, copy JSON to clipboard and paste it to Visual Studio using menu Edit > Paste Special > Paste JSON As Classes to see proper class representing this JSON from C# perspective.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top