内容型强>
您无需在调用MVC控制器操作时指定内容类型。只有在调用ASP.NET AJAX“ScriptServices”和页面方法时才需要特殊的“application / json; charset = utf-8”内容类型。 jQuery的默认contentType“application / x-www-form-urlencoded”适用于请求MVC控制器操作。
数据强>
数据正确无误。通过传递jQuery一个JSON对象,它将在POST数据中被序列化为patientID = 1。这个标准形式是MVC期望参数的方式。
当您使用ASP.NET AJAX服务时,您只需将参数括在引号中,例如“{'patientID':1}”。他们希望解析出代表JSON对象的单个字符串,而不是POST数据中的各个变量。
JSON 强>
在这种特定情况下,这不是问题,但是养成在JSON对象中引用任何字符串键或值的习惯是个好主意。如果您无意中使用JavaScript保留关键字作为对象中的键或值,而不引用它,则会遇到令人困惑的调试问题。
相反,您不必引用数值或布尔值。直接在对象中使用它们总是安全的。
因此,假设您确实想要POST而不是GET,那么$ .ajax()调用可能如下所示:
$.ajax({
type: 'POST',
url: '/Services/GetPatient',
data: { 'patientID' : 1 },
dataType: 'json',
success: function(jsonData) {
alert(jsonData);
},
error: function() {
alert('Error loading PatientID=' + id);
}
});