I am new to jQuery and Ajax, and am having trouble with a 'post'.
I am using a jQuery Ajax 'post' call to save data to a DB. When I attempt to save the data, it passes null to my C# method. The jQuery looks like this:
function saveInfo(id) {
var userID = id;
var userEmail = $('.userEmail').val();
var userName = $('.userName').val();
var dataJSON = {"userID": userID, "userEmail": userEmail, "userName": userName};
$.ajax({
type: 'POST',
url: '../../Services/AjaxServices.svc/SaveUser',
data:JSON.stringify(dataJSON),
contentType: 'application/json; charset=utf-8',
dataType: 'json'
});
return false;
}`
.userEmail and .userName are class references to input fields. The C# code looks like this:
[ServiceContract(Namespace = "http://testUsePage.com")]
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
public class AjaxServices
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
public void SaveUser(User user)
{
//code here handles save
}
}
I have a breakpoint set inside the 'SaveUser' method, and the User object passed is always null. Thanks!
EDIT: I switched the 'POST' to 'GET' in both the ajax call and WebInvoke attribute. Passing one parameter ( {"UserID": UserID} ) to the method with the signature ( public void SaveUser(string UserID) ) reaches the breakpoint, and passes the UserID with no exception. Switching it back to a post immediately causes an internal server error.
You should send your user data in this way:
{ user : { userID : 1, ... } }
since you are using wrappedrequest. First element in your json should be your parametername.
The rest of your code seems ok. You should use stringify.
You dont need to use json for something so small. try this
function saveInfo(id) {
var userID = id;
var userEmail = $('.userEmail').val();
var userName = $('.userName').val();
$.ajax({type: 'POST',
url: '../../Services/AjaxServices.svc/SaveUser/?userID='+userID+"&userEmail="+userEmail+"&userName="+userName,
});
return false;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With