user3817538 user3817538 - 4 months ago 15
Ajax Question

making an ajax call in jquery

I am trying to pass the following data to my action using ajax call. I am not sure what I am doing wrong but the client id is always 0. I am hard coding the client id in the call, but I still see zero. Everything else is getting passed correctly.

data: {
"BedID": bedID,
"BedNumber": bedNumber,
"ClientSearchItem": {
"ClientID": 160
},
"BuildingName": buildingName,
"RoomName": roomName,
"RoomNumber": roomNumber,
"SiteName": siteName
},


// my ajax call

$.ajax({
url: myUrl
type: "GET",
dataType: "JSON",
data: {
"BedID": bedID, "BedNumber": bedNumber, "ClientSearchItem": { "ClientID": 160 }, "BuildingName": buildingName,
"RoomName": roomName, "RoomNumber": roomNumber, "SiteName": siteName
},
success: function (data) {
// do something here
},
error: function (error) {
alert("An error occured");
}
});

public class SearchClient
{
// parameterless constructor
public SearchClient()
{

}
public int BedID { get; set; }
public int BedNumber { get; set; }
public string BuildingName { get; set;}
//public int ClientID { get; set; }
public ClientSearchItem ClientSearchItem { get; set; }
public bool IsReservation { get; set;}
public string RoomName { get; set;}
public string RoomNumber { get; set; }
public string BedManageOption { get; set; }

public string SiteName { get; set;}
[Required]
public string StartDate { get; set;}
public string StartTime { get; set;}
public DateTimePicker EndDateTime { get; set;}
public string Url { get; set; }
}

public ActionResult _AddClientToBed(SearchClient model)
{
// do something here
}

Answer

I would suggest couple of points in order to make your code working.

1) First add contentType: "application/json".

2) Second, make Ajax request as "POST" request so that Asp.Net MVC can easily resolve the form content into complex object. (Though it should resolve the complex object from query string as well). 3) Stringify your input data.

Your ajax call would look like below.

        $.ajax({
            url: myUrl,
            type: "POST",
            data: JSON.stringify({
                   "BedID": bedID, "BedNumber": bedNumber, "ClientSearchItem": { "ClientID": 160 }, "BuildingName": buildingName,
                   "RoomName": roomName, "RoomNumber": roomNumber, "SiteName": siteName
            }),
            contentType: "application/json",
            success: function (data) {
                // do something here
            },
            error: function (error) {
                alert("An error occured");
            }
        })

Try it once and confirm it worked for you.

Comments