Reputation: 6918
I have a model class like below:
public class clsUser
{
public string FirstName{ get; set; }
public String username { get; set; }
public String password { get; set; }
public List<ContactNumbers> Cnumbers{ get; set; }
}
Now i want to send ajax request with above model. i have tried to do same by using the following code:
var dd =
{
"FirstName": "ABC",
"username": "abc123",
"password": "abc@123",
"Cnumbers[0].Home":"0987654321",
"Cnumbers[1].Company":"7654321"
}
var objInsertUser= JSON.stringify(dd);
var URLValue = "http://localhost:47083/api/TestAPI/insertUser";
$.ajax({
type: "POST",
url: URLValue,
data: objInsertUser,
contentType: "application/json",
success: function (data) {
alert(data);
}
});
But this always sending "Cnumbers" as null. i am not getting why..
If i am doing in wrong way could experts tell me the correct way..
thanks in advance.
Upvotes: 0
Views: 1312
Reputation: 4301
The problem most likely lies in var objInsertUser= JSON.stringify(dd);
. Your object is already JSON, so there's no need to stringfy it. data: dd,
should be sufficient. When you Stringify already existing JSON you end up with default values for the parameters, and all non-primitives are null by default.
Also, as noted, your JSON is incorrect. Some people, when confronted with a problem, think "I know, I'll use JSON. Now you have two problems" XD. So, in summary: use correct JSON, and don't JSON.Stringify
existing JSON.
Upvotes: 0
Reputation: 133403
You need to create proper JSON. You need to create an array for Cnumbers
var dd = {
"FirstName": "ABC",
"username": "abc123",
"password": "abc@123",
"Cnumbers": [{
"Home": "0987654321"
}, {
"Company": "7654321"
}]
}
Upvotes: 3