REST、WCF、および JSON を使用してアプリケーションを機能させようとしています (これらすべてのテクノロジにとって新しいものです)。「GET」が正常に機能しています。問題を引き起こしているのは「POST」です。
以下に示すように、JSON.stringify を使用して JSON を「パック」し、POST を REST リソースに送信します。ただし、オブジェクトが要求を処理している WCF メソッドに到達すると、オブジェクトは常に null になります。
コードは次のとおりです。
$(document).ready(function () {
var input = {
Customer: {
customerId: "1",
firstname: "luke",
lastname: "sayaw",
email: "lumsayaw@gmail.com",
mobile: "0433395106",
state: "QLD"
}
};
$.ajax({
url: 'http://local.rest/restservice.svc/getcustomer',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(input),
dataType: 'json',
type: 'POST',
async: true,
success: function (data, success, xhr) {
alert('Group saved - ' + data);
alert('first name: ' + data.firstname);
},
error: function (xhr, status, error) {
alert('Error! - ' + xhr.status + ' ' + error);
}
});
});
サーバー側のコードは次のとおりです。
namespace RestService
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "RestService" in code, svc and config file together.
public class RestService : IRestService
{
public string getcustomer(Customer Customer)
{
string id = Customer.customerId ;
return new JavaScriptSerializer ().Serialize (Customer );
}
}
[DataContract ]
public class Customer
{
public string customerId {get;set;}
public string firstname { get; set; }
public string lastname { get; set; }
public string email { get; set; }
public string mobile { get; set; }
public string state { get; set; }
}
}
namespace RestService
{
[ServiceContract]
public interface IRestService
{
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/getcustomer")]
[return: MessageParameter(Name = "Customer")]
string getcustomer(Customer Customer);
}
}
どうもありがとう