Vikrant
Vikrant

Reputation: 444

Passing JSON to WebApi in MVC5

im facing issues in syntax to pass json array from jquery to the webapi in my mvc5 project .

Following is my code :-

C# code:-

//GET Instance

    // GET: api/PostDatas
    public IQueryable<PostData> GetPostDatas()
    {
        return db.PostDatas;
    }

//POST Instance

     // POST: api/PostDatas
    [ResponseType(typeof(PostData))]
    public IHttpActionResult PostPostData(PostData postData)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.PostDatas.Add(postData);
        db.SaveChanges();

        return CreatedAtRoute("DefaultApi", new { id = postData.postDataID }, postData);
    }

JQuery

  <script>
   function fnpostdata() {
    var model = {
        "userid": "01",
        "Description": "Desc",
        "photoid": "03"
    };
     $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json",
        url: "/api/PostDatas/",
        data: model,
        success: function (data) {
            alert('success');
        },
        error: function (error) {
            jsonValue = jQuery.parseJSON(error.responseText);
            jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 });
         }
      });
  }
     </script>

Im not able to send the data using jquery to my c# controller , just need to understand the syntax . Thank you .

Upvotes: 1

Views: 190

Answers (2)

Rohit Sonaje
Rohit Sonaje

Reputation: 532

check following things in your code: 1) Method attribute [HttpPost] 2) [FromBody] for input model 3) Check PostData class, it should contain public properties for userid, Description and photoid with case-sensitive of variable names.

and mainly change your AJAX request code to:

function fnpostdata() {
    var model = {
        "userid": "01",
        "Description": "Desc",
        "photoid": "03"
    };
     $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json",
        url: "/api/PostDatas/",
        data: JSON.stringify(model), //i have added JSON.stringify here
        success: function (data) {
            alert('success');
        },
        error: function (error) {
            jsonValue = jQuery.parseJSON(error.responseText);
            jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 });
         }
      });
  }

Please let me know, is this works for you?

Upvotes: 1

justadeveloper
justadeveloper

Reputation: 86

I included [FromBody] in the parameter in my previous project. Something like this:

[HttpPost]
public IHttpActionResult Register([FromBody]PostData postData)
{
     // some codes here
}

I was able to read the JSON data from that notation.

Upvotes: 0

Related Questions